用gdb工具分析core檔案

2021-05-05 18:26:29 字數 1328 閱讀 7321

在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的,本文對此做簡單介紹。

例如,乙個程式cmm_test_tool在執行的時候發生了錯誤,並生成了乙個core檔案,如下:

-rw-r–r– 1 root cmm_test_tool.c -rw-r–r– 1 root cmm_test_tool.o -rwxr-xr-x 1 root cmm_test_tool -rw——- 1 root core.19344 -rw——- 1 root core.19351 -rw-r–r– 1 root cmm_test_tool.cfg -rw-r–r– 1 root cmm_test_tool.res -rw-r–r– 1 root cmm_test_tool.log [root@autotest_sim2 mam2cm]#

首先利用file core.19344命令可以得到:

core.19344: elf 32-bit lsb core file intel 80386, version 1 (sysv), svr4-style, from 'cmm_test_tool'

可以看出core.19344是由cmm_test_tool這個工程產生。

接著就可以利用命令gdb進行查詢,格式為gdb 工程名 core檔名,例如 gdb cmm_test_tool core.19344結果如下:

最後乙個步驟是輸入where,找到錯誤發生的位置和堆疊,如下:

(gdb) where

#0 0×4202cec1 in __strtoul_internal () from /lib/i686/libc.so.6

#1 0×4202d4e7 in strtoul () from /lib/i686/libc.so.6

#2 0×0804b4da in getmaxidfromdb (get_type=2, max_id=0×806fd20) at cmm_test_tool.c:788

#3 0×0804b9d7 in constrctvodprogram (vod_program=0×40345bdc) at cmm_test_tool.c:946

#4 0×0804a2f4 in tvrequestthread (arg=0×0) at cmm_test_tool.c:372

#5 0×40021941 in pthread_start_thread () from /lib/i686/libpthread.so.0 (gdb)

至此,可以看出檔案出錯的位置是函式 getmaxidfromdb ,兩個引數分別是2和0×806fd20,這個函式位於源**的788行,基於此,我們就可以有針對性的找到問題的根源,並加以解決。

用gdb工具分析core檔案

在unix系統下,應用程式崩潰,一般會產生core檔案,如何根據core檔案查詢問題的所在,並做相應的分析和除錯,是非常重要的,本文對此做簡單介紹。例如,乙個程式cmm test tool在執行的時候發生了錯誤,並生成了乙個core檔案,如下 rw r r 1 root cmm test tool....

gdb 分析core檔案 小記

測試環境twemproxy程序突然出core退出,記錄一下gdb分析過程 解析 coredump檔案 bt 列印crash時的堆疊 gdb root proxy bin twemproxy tmp cordump.file gdb bt 0 0x00007f9f3b0d4337 in ssignal...

gdb可以用於分析core檔案

gdb可以用於分析 core 檔案。產生core的原因一般是 1.記憶體訪問越界,錯誤的陣列下標,字串越界,2。多執行緒下使用執行緒不安全的函式 3.多執行緒共享資料不加鎖保護。4.非法指標。5堆疊溢位。特別是不能使用過大的區域性變數,容易早成棧溢位。root ubuntu ulimit c 0 可...