linux GDB調試core文件

1. 什麼是core dump?

core dump說的是操作系統執行的一個動作,當某個進程因爲一些原因意外終止(crash)的時候,操作系統會將這個進程當時的內存信息轉儲(dump)到磁盤上,產生的文件就是core文件了,一般會以core.xxx形式命名。


2. 那些信號能夠引起core dump?

經常用到的主要有這幾種:
SIGSEGV  建立CORE文件   段非法錯誤 
SIGILL   建立CORE文件   非法指令 
SIGTRAP  建立CORE文件   跟蹤自陷 
SIGBUS   建立CORE文件   總線錯誤 
SIGFPE   建立CORE文件   浮點異常 
SIGIOT   建立CORE文件   執行I/O自陷

具體的那些信號能產生core,可以在終端執行命令“man 7 signal”查看。


3. 設置生成core文件的環境

ulimit -c :查看core文件的大小的限制
ulimit -c unlimited :設置core文件的大小爲不限制


4. 調試core文件的相關命令

4.1 啓動命令:gdb exe_name core_name

4.2 具體的調試命令:

backtrace :查看堆棧信息,可以簡寫成bt
where : 同bt
frame num :查看堆棧中第num個frame的信息,frame可以簡寫成f

focus num :查看堆棧中第num個frame的具體代碼信息,focus可以簡寫成foc。

5.查看變量

如果你要查看某一層的信息,你需要在切換當前的棧,一般來說,程序停止時,最頂
層的棧就是當前棧,如果你要查看棧下面層的詳細信息,首先要做的是切換當前棧。

f n n是一個從0開始的整數,是棧中的層編號。比如:frame 0,表示棧頂,frame 1,表示棧的第二層。

info args
打印出當前函數的參數名及其值。
info locals
打印出當前函數中所有局部變量及其值。
info catch
打印出當前的函數中的異常處理信息。

p locl 查看局部變量locl 的值

發佈了127 篇原創文章 · 獲贊 14 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章