9

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

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

但它从不生成核心转储,以便我稍后可以检查错误的详细信息。我怎样才能生成它?

4

1 回答 1

22

您需要设置环境变量来请求核心转储

export ASAN_OPTIONS=abort_on_error=1

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

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

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

(默认情况下,coredump 在那里被禁用,因为担心它们会太大)。

有关标志的完整列表,您可以查看Asan wiki

于 2017-03-17T20:27:51.087 回答