亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux學習筆記15——GDB 命令詳細解釋

系統 2173 0

GDB 命令詳細解釋?

Linux中包含有一個很有用的調試工具--gdb(GNU Debuger),它可以用來調試C和C++程序,功能不亞于Windows下的許多圖形界面的調試工具。

?

和所有常用的調試工具一樣,gdb提供了以下功能:

 # 監視程序中變量的值

 # 在程序中設置斷點

 # 程序的單步執行

?

在使用gdb前,必須先載入可執行文件,因為要進行調試,文件中就必須包含調試信息,所以在用gcc或cc編譯時就需要用-g參數來打開程序的調試選項。

?

調試開始時,必須先載入要進行調試的程序,可以用以下兩種方式:

 * 在啟動gdb后執行以下命令:

   file 可執行文件路徑

 * 在gdb啟動時就載入程序:

   gdb 可執行文件路徑

?

載入程序后,接下來就是要進行斷點的設置,要監視的變量的添加等工作,下面對在這個過程中常會用到的命令逐一進行介紹:

 * list :顯示程序中的代碼,常用使用格式有:

    list

      輸出從上次調用list命令開始往后的10行程序代碼。

    list -

      輸出從上次調用list命令開始往前的10行程序代碼。

    list n

      輸出第n行附近的10行程序代碼。

    list function

      輸出函數function前后的10行程序代碼。

 * forward/search :從當前行向后查找匹配某個字符串的程序行。使用格式:

    forward/search 字符串

  查找到的行號將保存在$_變量中,可以用print $_命令來查看。

 * reverse-search :和forward/search相反,向前查找字符串。使用格式同上。

 * break :在程序中設置斷點,當程序運行到指定行上時,會暫停執行。使用格式:

    break 要設置斷點的行號

 * tbreak :設置臨時斷點,在設置之后只起作用一次。使用格式:

    tbreak 要設置臨時斷點的行號

 * clear :和break相反,clear用于清除斷點。使用格式:

    clear 要清除的斷點所在的行號

 * run :啟動程序,在run后面帶上參數可以傳遞給正在調試的程序。

 * awatch :用來增加一個觀察點(add watch),使用格式:

    awatch 變量或表達式

  當表達式的值發生改變或表達式的值被讀取時,程序就會停止運行。

 * watch :與awatch類似用來設置觀察點,但程序只有當表達式的值發生改變時才會停止運行。使用格 式:

    watch 變量或表達式

  需要注意的是,awatch和watch都必須在程序運行的過程中設置觀察點,即可運行run之后才能設置。

 * commands :設置在遇到斷點后執行特定的指令。使用格式有:

    commands

      設置遇到最后一個遇到的斷點時要執行的命令

    commands n

      設置遇到斷點號n時要執行的命令

  注意,commands后面跟的是斷點號,而不是斷點所在的行號。

  在輸入命令后,就可以輸入遇到斷點后要執行的命令,每行一條命令,在輸入最后一條命令后輸入end就可以結束輸入。

 * delete :清除斷點或自動顯示的表達式。使用格式:

    delete 斷點號

 * disable :讓指定斷點失效。使用格式:

    disable 斷點號列表

  斷點號之間用空格間隔開。

 * enable :和disable相反,恢復失效的斷點。使用格式:

    enable 斷點編號列表

 * ignore :忽略斷點。使用格式:

    ignore 斷點號 忽略次數

 * condition :設置斷點在一定條件下才能生效。使用格式:

    condition 斷點號 條件表達式

 * cont/continue :使程序在暫停在斷點之后繼續運行。使用格式:

    cont

      跳過當前斷點繼續運行。

    cont n

      跳過n次斷點,繼續運行。

  當n為1時,cont 1即為cont。

 * jump :讓程序跳到指定行開始調試。使用格式:

    jump 行號

 * next :繼續執行語句,但是跳過子程序的調用。使用格式:

    next

      執行一條語句

    next n

      執行n條語句

 * nexti :單步執行語句,但和next不同的是,它會跟蹤到子程序的內部,但不打印出子程序內部的語句。使用格式同上。

 * step :與next類似,但是它會跟蹤到子程序的內部,而且會顯示子程序內部的執行情況。使用格式同上。

 * stepi :與step類似,但是比step更詳細,是nexti和step的結合。使用格式同上。

 * whatis :顯示某個變量或表達式的數據類型。使用格式:

    whatis 變量或表達式

 * ptype :和whatis類似,用于顯示數據類型,但是它還可以顯示typedef定義的類型等。使用格式:

    ptype 變量或表達式

 * set :設置程序中變量的值。使用格式:

    set 變量=表達式

    set 變量:=表達式

 * display :增加要顯示值的表達式。使用格式:

    display 表達式

 * info display :顯示當前所有的要顯示值的表達式。

 * delete display/undisplay :刪除要顯示值的表達式。使用格式:

    delete display/undisplay 表達式編號

 * disable display :暫時不顯示一個要表達式的值。使用格式:

    disable display 表達式編號

 * enable display :與disable display相反,使用表達式恢復顯示。使用格式:

    enable display 表達式編號

 * print :打印變量或表達式的值。使用格式:

    print 變量或表達式

  表達式中有兩個符號有特殊含義:$和$$。

  $表示給定序號的前一個序號,$$表示給定序號的前兩個序號。

  如果$和$$后面不帶數字,則給定序號為當前序號。

 * backtrace :打印指定個數的棧幀(stack frame)。使用格式:

    backtrace 棧幀個數

 * frame :打印棧幀。使用格式:

    frame 棧幀號

 * info frame :顯示當前棧幀的詳細信息。

 * select-frame :選擇棧幀,選擇后可以用info frame來顯示棧幀信息。使用格式:

    select-frame 棧幀號

 * kill :結束當前程序的調試。

 * quit :退出gdb。

?

本文來自博客園,轉載請標明出處:http://www.cnblogs.com/evasnowind/archive/2010/11/07/1871324.html

Linux學習筆記15——GDB 命令詳細解釋


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产91系列 | 97国产精品视频观看一 | 成人国产在线24小时播放视频 | 久久亚洲精品tv | 久久中文网 | 真人特级毛片免费视频 | 久久九九精品一区二区 | 欧美一区二区三区国产精品 | 麻豆久久精品免费看国产 | 尤物视频在线免费观看 | 欧美性猛交aa一级 | 久草在线视频资源 | 国产中文字幕在线 | 日韩中文字幕精品 | 亚洲欧美日韩综合精品网 | 波多野结衣中文字幕久久 | 亚洲欧洲一区二区三区在线观看 | 爱爱网网站免费观看 | 夜夜艹天天干 | 日本在线精品视频 | 亚洲精品久久久久久下一站 | 久久久7777888精品 | 免费一级在线 | 亚洲一区二区三区在线视频 | 国产精品久久国产精麻豆99网站 | 国产一区亚洲二区三区 | 俄罗斯一级毛片免费播放 | 久久99国产亚洲精品观看 | 九九热播| 手机看片国产欧美日韩高清 | 色在线网| 99久热国产精品视频尤物不卡 | 永久黄网站色视频免费观看 | 久久久久久久久久鸭 | 伊人高清| 国内精品久久久久久久星辰影视 | 四虎影视免费永久在线观看 | 色女孩综合 | 亚洲欧美人成人让影院 | 色青青草原桃花久久综合 | 国产成人精品高清免费 |