一、設置程序生成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