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

wsy*_*wsy 3 gcc sanitizer address-sanitizer

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

g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer
Run Code Online (Sandbox Code Playgroud)

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

yug*_*ugr 7

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

export ASAN_OPTIONS=abort_on_error=1
Run Code Online (Sandbox Code Playgroud)

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

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

export ASAN_OPTIONS=...:disable_coredump=0::unmap_shadow_on_exit=1
Run Code Online (Sandbox Code Playgroud)

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

  • 这是我可以在网上找到适合我的 64 位系统的正确答案的唯一地方。谢谢你! (3认同)