Linux程序宕掉后如何通過gdb查看出錯信息


我們在編寫服務端程序的時候,由於多線程並且環境復雜,程序可能在不確定條件的情況下宕掉,還不好重新,這是我們如何獲取程序的出錯信息,一種方法通過打日志,有時候一些錯誤日志也不能體現出來,這時就用到我們的core dump文件了。
通常情況下coredmp包含了程序運行時的內存,寄存器狀態,堆棧指針,內存管理信息等。可以理解為把程序工作的當前狀態存儲成一個文件。許多程序和操作系統出錯時會自動生成一個core文件。
1 我們系統一般默認是吧core dump 關掉的,可以通過ulimit -c 查看如果是0就是關閉了,我們可以通過ulimit -c n來打開,你是設置coredump文件的最大值kb,或者直接設置不限制
ulimit –c unlimited
2 設置完畢后我們編寫一個出錯的程序實驗一下
//main.cpp
int main()
{
int *xcj = 0;
*xcj = 10;
return 0;
}
 
3 編譯一下,記得加-g 將調試信息編入執行程序,再運行程序
g++ main.cpp -o main -g

./main

 

 

 

 

 

4 使用gdb查看調試信息
gdb main core

 

 

 

通過gdb就可以看到錯誤的信息了
 
更多內容可以到網上搜索“夏曹俊”獲取我的課程
也可以看我在csdn學院的視頻課程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM