Gdb 除錯訊號

2021-06-23 06:09:22 字數 750 閱讀 6632

gdb有能力在你除錯程式的時候處理任何一種訊號,你可以告訴gdb需要處理哪一種訊號。你可以要求gdb收到你所指定的訊號時,馬上停住正在執行的程式,以供你進行除錯。你可以用gdb的handle命令來完成這一功能。

handle

在gdb中定義乙個訊號處理。訊號可以以sig開頭或不以sig開頭,可以用定義乙個要處理訊號的範圍(如:sigio- sigkill,表示處理從sigio訊號到sigkill的訊號,其中包括sigio, sigiot,sigkill三個訊號),也可以使用關鍵字 all來標明要處理所有的訊號。一旦被除錯的程式接收到訊號,執行程式馬上會被gdb停住,以供除錯。其可以是以下幾種關鍵字的乙個或多個。

nostop

當被除錯的程式收到訊號時,gdb不會停住程式的執行,但會打出訊息告訴你收到這種訊號。

stop

當被除錯的程式收到訊號時,gdb會停住你的程式。

print

當被除錯的程式收到訊號時,gdb會顯示出一條資訊。

noprint

當被除錯的程式收到訊號時,gdb不會告訴你收到訊號的資訊。

pass

noignore

當被除錯的程式收到訊號時,gdb不處理訊號。這表示,gdb會把這個訊號交給被除錯程式會處理。

nopass

ignore

當被除錯的程式收到訊號時,gdb不會讓被除錯程式來處理這個訊號。

info signals

info handle

檢視有哪些訊號在被gdb檢測中。

訊號 核心轉儲 gdb除錯

訊號 使用kill l 檢視linux中的訊號。可以從上圖看出linux中一共有62個訊號 沒有32,33 1 31為普通訊號,34 64為實時訊號。我們主要關注前31個訊號。每乙個訊號都有其對應的意義。1 sighup 本訊號在使用者終端連線 正常或非正常 結束時發出,通常是在終端的控制程序結束時...

gdb 除錯 vs除錯

一 先要生成二進位制檔案 g g 1.cpp o 1.out g引數不要省,不然 gdb l 引數用不了 二 引數 設定斷點 設定 函式斷點break func 在某行設定斷點break 7 檢視斷點資訊 info break 刪除斷點 d 刪除所有斷點 d 3 刪除第三個 執行 r 下一步 n 逐...

GDB除錯命令以及GDB除錯段錯誤

一 gdb的除錯命令。c語言是 cc g tst.c o tst c 是g g o 生成的檔案 file.cpp c 除錯程式命令 gdb file 啟動,羅列 行數ist 1,break 行數 info break,run r 除錯執行,step s 單步除錯,檢視變數 print p 變數名,檢...