GDB常用除錯命令(二)
-
-
GDB訊號處理
-
在GDB中使用handle命令定義一個訊號處理。訊號可以以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不會讓被除錯程式來處理這個訊號
檢視有哪些訊號被GDB檢測:
info handle/signals
-
-
檢測點(checkpoint)使用
-
-
- 跟蹤點
tracepoint:只跟蹤記錄資訊而不會中斷程式的執行。當程式是實時執行時,或者與其他的程式有互動時,除錯者希望使用跟蹤點監控程式而又不打斷程式的執行。
與斷點相同的是,跟蹤點會儲存下在跟蹤點時的一些記憶體資訊供使用者查閱,例如陣列或者物件;另外,tracepoints可以通過save命令儲存,以方便使用者下次再次進入程式除錯時不需要重設這些跟蹤點。