« 最近気になった記事(2007.8.18) | トップページ | 「MX Revolution」(ロジクール) »

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 (変数名)でクラッシュした時の変数の値を表示できることだなぁ.

|

« 最近気になった記事(2007.8.18) | トップページ | 「MX Revolution」(ロジクール) »

Linux」カテゴリの記事

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/412869/7585136

この記事へのトラックバック一覧です: core解析メモ:

« 最近気になった記事(2007.8.18) | トップページ | 「MX Revolution」(ロジクール) »