如何生成核心转储上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 

(核心转储默认情况下禁用那里,怕会过大)。