core解析メモ
友人に頼まれてcoreの解析の勉強.
めったにlinux上でデバッグなんてしないからなぁ・・・
まず、bashはデフォルトではcoreを吐かないように設定されているため、それを以下のコマンドで確認.
#ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
...
これをcoreを無制限に生成するように変更.
#ulimit -c unlimited
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
...
例えば、以下のようなCファイルがあるとして
#include<stdio.h>
int main() {
int i[3];
i[100000] = 10;
return 0;
}
これをコンパイル、実行するとcoreが生成される.
それをgdbで解析.
#gdb -c core a.out
gdbシェル上で、listはソースファイルの表示(コンパイル時に-gオプションが必要)、btとwhereでスタックとレースの表示、などで解析が可能.
特に便利なのが、print (変数名)でクラッシュした時の変数の値を表示できることだなぁ.
| 固定リンク
「Linux」カテゴリの記事
- GNU GPLv3日本語版(2007.09.08)
- OSSビデオドライバの行方(2007.09.08)
- core解析メモ(2007.08.18)
- レーザー光線を発射する鮫(2007.08.17)
- Linux対応デバイス(2007.08.17)