Valgrindを使うとメモリリークの検出などを行うことができて便利ですが、 OSやライブラリに起因するメモリリークのレポートが大量に出てくると邪魔なため、backtraceのパターンを指定して抑制(suppress)することができます。
例)valgrind.s
1 { 2 <insert_a_suppression _name_here > 3 Memcheck:L eak 4 fun:malloc 5 fun:_nc_ta ble_insert _n 6 fun:token_ table_add 7 fun:notify _register_ check 8 fun:notify _register_ tz 9 fun:tzsetw all_basic 10 fun:localt ime 11 fun:ctime 12 }
funはbacktrace上の関数名を示しますが、全体をマッチさせる場合、 呼び出し経路ごとに異なったパターンになるため、 沢山登録する必要が出てきてしまいます。
最新のValgrind(valgrind-3
1 { 2 <insert_a_suppression _name_here > 3 Memcheck:L eak 4 fun:malloc 5 ... 6 fun:localt ime 7 }
localtime関数を呼び出したあとに、内部のmalloc呼び出しで 発生したメモリリークを全部一括で抑制できます。便利ですね。
posted by
genki
on Mon 5 Apr 2010
at 14:42