GCC如何產生core dump
1.安裝apport(automatically generate crash reports for debugging)
2.修改/etc/security/limits.conf檔案,使允許core dump,或者用ulimit -c unlimited設定core dump檔案的大小為unlimited
3.C/C++的編譯開關-g(產生除錯符號)
######執行編譯好的程式testc(我的程式)
[email protected]:~/testc/bin/Debug$ ./testc
######下面一行顯示了core dumped表示成功,core檔案在/var/crash或者在當前目錄
段錯誤 (core dumped)
######果然在當前目錄
core testc
######gdb一下
[email protected]:~/testc/bin/Debug$ gdb testc core
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
warning: Can't read pathname for load map: Input/output error.
Reading symbols from /usr/lib/libstdc++.so.6...done.
Loaded symbols for /usr/lib/libstdc++.so.6
Reading symbols from /lib/tls/i686/cmov/libm.so.6...done.
Loaded symbols for /lib/tls/i686/cmov/libm.so.6
Reading symbols from /lib/libgcc_s.so.1...done.
Loaded symbols for /lib/libgcc_s.so.1
Reading symbols from /lib/tls/i686/cmov/libc.so.6...done.
Loaded symbols for /lib/tls/i686/cmov/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./testc'.
######程式是由於段錯誤退出的
Program terminated with signal 11, Segmentation fault.
[New process 13072]
######段錯誤的地方在dummy_function - main.c的第5行
#0 0x080483a4 in dummy_function () at /home/kimi/testc/main.c:5
5 *ptr = 0x00;
######列印一下呼叫堆疊
(gdb) bt
#0 0x080483a4 in dummy_function () at /home/kimi/testc/main.c:5
#1 0x080483bc in main () at /home/kimi/testc/main.c:12
(gdb)