手把手教你玩轉GDB(三)—常用命令

本文是手把手教你玩轉GDB的第三篇,主要內容是介紹一些在程序調試過程中最常用的GDB命令,廢話不多話,開始今天的正題。

   1. attach process-id/detach

(1)attach process-id: 在GDB狀態下,開始調試一個正在運行的進程,其進程ID爲process-id
(2)detach: 停止調試當前正在調試有進程,與attach配對試用

   2. kill

(1)基本功能:殺掉當前GDB正在調試的應用程序所對應的子進程
(2)如果想不退出GDB而對當前正在調試的應用程序重新編譯、鏈接,可以在GDB中執行kill殺掉子進程,等編譯、鏈接完後,再重新執行run,GDB便可加載新的可執行程序啓動調試

   3. 多線程程序調試相關:

(1)thread threadno:切換當前線程到由threadno指定的線程
(2)info threads:查看GDB當前調試的程序的各個線程的相關信息
(3)thread apply [threadno] [all] args:對指定(或所有)的線程執行由args指定的命令

   4. 多進程程序調試相關(fork/vfork):

(1)缺省方式:fork/vfork之後,GDB仍然調試父進程,與子進程不相關
(2)set follow-fork-mode mode:設置GDB行爲,mode爲parent時,與缺省情況一樣;mode爲child時,fork/vfork之後,GDB進入子進程調試,與父進程不再相關
(3)show follow-fork-mode:查看當前GDB多進程跟蹤模式的設置

   5. step & stepi:

(1)step [count]: 如果沒有指定count, 則繼續執行程序,直到到達與當前源文件不同的源文件中時停止;如果指定了count, 則重複行上面的過程count次
(2)stepi [count]: 如果沒有指定count, 繼續執行下一條機器指令,然後停止;如果指定了count,則重複上面的過程count次
(3)step比較常見的應用場景:在函數func被調用的某行代碼處設置斷點,等程序在斷點處停下來後,可以用step命令進入該函數的實現中,但前提是該函數編譯的時候把調試信息也編譯進去了,負責step會跳過該函數。

   6. next & nexti:

(1)next [count]: 如果沒有指定count, 單步執行下一行程序;如果指定了count,單步執行接下來的count行程序
(2)nexti [count]: 如果沒有指定count, 單步執行下一條指令;如果指定了count, 音頻執行接下來的count條執行
(3)stepi和nexti的區別:nexti在執行某機器指令時,如果該指令是函數調用,那麼程序執行直到該函數調用結束時才停止。

   7. continue [ignore-count]:

喚醒程序,繼續運行,至到遇到下一個斷點,或者程序結束。如果指定ignore-count,那麼程序在接下來的運行中,忽略ignore-count次斷點。

    8. finish & return:

(1)finish: 繼續執行程序,直到當前被調用的函數結束,如果該函數有返回值,把返回值也打印到控制檯
(2)return [expression]: 中止當前函數的調用,如果指定了expression,把expresson值當做當前函數的返回值;如果沒有,直接結束當前函數調用

    9. 信號的處理:

(1)info signals info handle:打印所有的信號相關的信息,以及GDB缺省的處理方式:

(2)handle signal action: 設置GDB對具體某個信號的處理方式。signal可以爲信號整數值,也可以爲SIGSEGV這樣的符號。action的取值有:
a. stop和nostop: nostop表示當GDB收到指定的信號,不會應用停止程序的執行,只會打印出一條收到信號的消息,因此,nostop也暗含了下面的print; 而stop則表示,當GDB收到指定的信號,停止應用程序的執行。
b. print和noprint: print表示如果收到指定的信號,打印出一條信息; noprint與print表示相反的意思
c. pass和nopass:pass表示如果收到指定的信號,把該信號通知給應用程序; nopass表示與pass相反的意思
d. ignore和noignore: ignore與nopass同義,同理,noignore與pass同義
發佈了33 篇原創文章 · 獲贊 6 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章