如何在AddressSanitizer错误上生成核心转储

时间:2017-03-17 07:31:23

标签: gcc address-sanitizer sanitizer

我编译了这样的代码以启用Asan:

g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer

但它永远不会生成核心转储,以便我以后可以检查错误的详细信息。我该如何生成它?

1 个答案:

答案 0 :(得分:5)

您需要设置环境变量以请求coredumps

export ASAN_OPTIONS=abort_on_error=1

这应该是默认的,但由于历史原因,ASan只是以非零错误代码退出。

在64位系统上,您可能需要添加

export ASAN_OPTIONS=...:disable_coredump=0::unmap_shadow_on_exit=1

(coredumps默认禁用,担心它们会太大)。