Linux下產生dump文件進行代碼調試(debug,dump,gcc)

一、設置程序生成debug信息,一般會產生app.debug文件;html

二、在Linux命令行中開啓程序Crashed的時候產生dump文件:linux

# ulimit -c unlimited #只對當前shell進程有效
或在~/.bashrc 的最後加入: ulimit -c unlimited (一勞永逸)

設置dump文件大小爲100k,輸入ulimit -c 100,默認是unlimited無限制,產生的dump文件會比較大。有時候須要使用root權限來設置。shell

三、在命令行輸入gdb命令進行調試:bash

# gdb ./app ./dump
或# gdb ./app --core=./dump

app爲程序名稱,dump爲產生的dump文件名稱,默認狀況下會在程序所在的目錄產生core.xxx類型的dump文件,每次產生的數字編號都會不同,如core.956,core10125等。app

四、在輸出的內容中找到相似的中斷錯誤描述:ui

Program terminated with signal 11, Segmentation fault.
#0  SDK_SimulatorTrigger () at ../../CameraSDK/camera/camerasdk.cpp:95
95	        strcpy(ptr, "heel");

#後面是異常發生的源代碼文件名稱,95是代碼行號,後面是具體的語句。命令行

五、經常使用的gdb調試器命令:線程

1.按下兩次tab鍵,選擇Y,#列出全部命令
2.break命令顯示中斷位置所在的源碼文件和代碼行號
3.list 100顯示當前中斷源碼文件的代碼行95~104,再次回車,接着顯示後面的代碼
4.bt命令等於info stack命令,查看程序調用堆棧列表
5.info命令,輸入info回車,能夠查詢不少有用的信息,好比查詢調用堆棧info stack,當前線程信息info threads等。

六、輸入quit或!退出gdb調試,輸入help顯式幫助文件debug


參考:
Linux C 讓程序崩潰後生成Core Dump
linux core dump 文件 gdb分析調試

相關文章
相關標籤/搜索