使用 Address Sanitizer 编译程序时出错
Posted
技术标签:
【中文标题】使用 Address Sanitizer 编译程序时出错【英文标题】:Error compiling program with Address Sanitizer 【发布时间】:2017-01-30 18:30:36 【问题描述】:我正在尝试使用 Address Sanitizer (ASan) 编译程序 (tarantool),但遇到以下错误:
/home/tarantool/src/fiber.c:123:2: error: implicit declaration of function '__sanitizer_start_switch_fiber' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
ASAN_START_SWITCH_FIBER(asan_state, 1,
我无法找出此问题的原因。有人能指出我正确的方向吗?
【问题讨论】:
【参考方案1】:根据您使用 GCC 的标签。 Fiber 接口仅在 Clang this summer 中实现,并在 November 中合并到尚未发布的 GCC 7。因此,您似乎应该切换到 Clang 或等到 GCC 7 发布(或使用预发布版本)。
作为旁注,您可以将此问题报告给 tarantool 开发人员,以便他们检查编译器版本并以更友好的方式报告错误。
【讨论】:
以上是关于使用 Address Sanitizer 编译程序时出错的主要内容,如果未能解决你的问题,请参考以下文章
检测到错误后,Can Address Sanitizer会立即中止吗?
使用 Address Sanitizer 和 gcc7.1.0 时如何生成核心转储
在Android上使用Address Sanitizer构建但使用CMake