2017-03-17 63 views
2

我編譯這樣我的代碼,以使阿三:如何生成核心轉儲上AddressSanitizer錯誤

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

但它從來沒有產生一個核心轉儲,這樣我可以在以後檢查錯誤的詳細信息。我怎樣才能生成它?

回答

3

需要設置環境變量,要求核心轉儲

export ASAN_OPTIONS=abort_on_error=1 

這確實應該默認值,但由於歷史原因阿三隻是非零錯誤代碼退出來代替。

在64位系統中,你可能需要添加

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

(核心轉儲默認情況下禁用那裏,怕會過大)。