GLIBCが、malloc()やfree()でメモリ破壊や二重開放などを検出した場合、stack traceやmemory mapが表示され、プログラムが終了します。このような現象の原因を調査するために、コアをダンプさせ、GDBで解析したい時があります。そのような場合、以下の環境変数を設定すると、異常検出時、abort()がコールされます。ulimit -c unlimitedなどでコアを出力する設定にしておくと、SIGABRTを受けて、コアダンプが生成されます。
MALLOC_CHECK_=2
ちなみに設定する値によって、次の振る舞いになります。
0: 何も起こさない
1: メッセージを表示
2: abortする
3: 上記1と2の両方を行う
0 件のコメント:
コメントを投稿