gdb可以用於分析
core
檔案。產生core的原因一般是
1.記憶體訪問越界,錯誤的陣列下標,字串越界,
2。多執行緒下使用執行緒不安全的函式
3.多執行緒共享資料不加鎖保護。
4.非法指標。
5堆疊溢位。特別是不能使用過大的區域性變數,容易早成棧溢位。
root@ubuntu:~# ulimit -c 0
可以檢視限制生成core
檔案的大小,
0表示不生成
core
檔案root@ubuntu:~# ulimit -c unlimited
root@ubuntu:~# ulimit -c
unlimited
ulimit -c unlimited
不限制生成的core
檔案的大小
限制512
個位元組root@ubuntu:~# ulimit -c 512
root@ubuntu:~# ulimit -c
512
注意:當前設定的ulimit只對當前會話有效,如想在系統均有效,則在/etc/profile中加入ulimit -c unlimited
有如下問題原始碼
test.c
#include int main()
gcc test.c -g
生成了a.out可執行檔案
使用gdb執行並生成core檔案,bt打出棧資訊。
core檔案需要使用gdb來檢視。
gdb ./a.out
core-file core.***x
使用bt命令即可看到程式出錯的地方。
以下兩種命令方式具有相同的效果,但是在有些環境下不生效,所以推薦使用上面的命令。
(1)gdb -core=core.***x
file ./a.out
bt (2)gdb -c core.***x
file ./a.out
bt
gdb 分析core檔案 小記
測試環境twemproxy程序突然出core退出,記錄一下gdb分析過程 解析 coredump檔案 bt 列印crash時的堆疊 gdb root proxy bin twemproxy tmp cordump.file gdb bt 0 0x00007f9f3b0d4337 in ssignal...
用gdb工具分析core檔案
在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的,本文對此做簡單介紹。例如,乙個程式cmm test tool在執行的時候發生了錯誤,並生成了乙個core檔案,如下 rw r r 1 root cmm test tool....
用gdb工具分析core檔案
在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的,本文對此做簡單介紹。例如,乙個程式cmm test tool在執行的時候發生了錯誤,並生成了乙個core檔案,如下 rw r r 1 root cmm test tool....