天天看點

linux 指令調試分析core檔案,Linux下如何調試coredump檔案

1、設定系統相關參數,否則不會産生coredump檔案。

echo "ulimit -c 1024" >> /etc/profile

設定完後,重新登入系統或者source /etc/profile,使生效。

2、編寫測試檔案,dump.cpp。

#include

#include

void crash()

{

char *str = "read only!";

str[0] = 'A';

}

int main()

{

crash();

}

3、編譯

g++ dump.cpp -o dump

4、生成coredump檔案

Segmentation fault (core dumped)

5、調試

gdb ./dump ./core,意思為./core檔案由./dump生成,并用gdb進行調試。

編譯時如若未指定-g,輸出結果如下:

Core was generated by `./dump'.

Program terminated with signal SIGSEGV, Segmentation fault.

#0 0x00000000004004e6 in crash() ()

(gdb)

編譯時如若指定-g,則可以看到更多的調試資訊,輸出結果如下:

Core was generated by `./dump'.

Program terminated with signal SIGSEGV, Segmentation fault.

#0 0x00000000004004e6 in crash () at dump.cpp:6

6 str[0] = 'A';

(gdb)