如何生成核心转储上AddressSanitizer错误
问题描述:
我编译这样我的代码,以使阿三:如何生成核心转储上AddressSanitizer错误
g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer
但它从来没有产生一个核心转储,这样我可以在以后检查错误的详细信息。我怎样才能生成它?
答
需要设置环境变量,要求核心转储
export ASAN_OPTIONS=abort_on_error=1
这确实应该默认值,但由于历史原因阿三只是非零错误代码退出来代替。
在64位系统中,你可能需要添加
export ASAN_OPTIONS=...:disable_coredump=0::unmap_shadow_on_exit=1
(核心转储默认情况下禁用那里,怕会过大)。