-O1 以上 -D_FORTIFY_SOURCE=1
チェックするタイミング | チェック内容 |
---|---|
コンパイル時 | コンパイル時にチェック可能な明らかなバッファオーバーフロー |
実行時 | 上記以外のバッファオーバーフロー |
-D_FORTIFY_SOURCE=1を
-D_FORTIFY_SOURCE=2にすると、より厳しくチェエクされるようになる。
$ grep -r "_chk" /usr/include/ | sed 's/.*\(__.*chk\).*/\1/' | sort | uniq
$ MUDFLAP_OPTIONS="-mode-nop" <target-test-program>
$ valgrind --tool=memcheck --leak-check=yes <program-file-name>または
$ valgrind --reak-check=full --leak-resolution=high --show-reachable=yes <program-file-name>
#include <mcheck.h>
# export MALLOC_TRACE=<log-file-name>
= Start @ /usr/lib/libstdc++.so.5:(_Znwj+0x2e)[0x400b22fe] + 0x8049a98 0x1 @ /usr/lib/libstdc++.so.5:(_Znwj+0x2e)[0x400b22fe] + 0x8049aa8 0x1 @ /usr/lib/libstdc++.so.5:(_ZdlPv+0x23)[0x400b0de3] - 0x8049aa8 @ /usr/lib/libstdc++.so.5:(_Znwj+0x2e)[0x400b22fe] + 0x8049ab8 0x64 = End
+ は new - は delete
export MALLOC_CHECK_=”値” 値は0〜3です。 MALLOC_CHECK_ = 0 何もしない MALLOC_CHECK_ = 1 標準エラー出力に診断メッセージ表示 MALLOC_CHECK_ = 2 abort MALLOC_CHECK_ = 3 1と2の両方