GDB基本命令-從開啟檔案到調試結束

來源:互聯網
上載者:User

GDB基本命令-從開啟檔案到調試結束

 

  • 事前準備
    1 gcc -g -o 將原檔案編譯成能讓gdb調試的目標檔案
    2 gdb 開啟要調試的目標檔案
    3 set args  設定參數 
            或run的時候用run 來實現
    4 show args 參看參數
    5 show environment 查看environment
    5 unset env 清除所有環境變數
    6 set environment 來設定一個環境變數VAR1
    設定/刪除斷點
    1 info sources  或 list   來查看檔案,要不然都不知道應該在哪裡設定斷點
    2 查看斷點 info breakpoints
    3 break
    4    tbreak 設定臨時斷點,到達後被自動刪除
    5 enable
      enable delete
            enable once
    6 disable
    7 delete breakpoints  刪除斷點
      或單用delete而不加所有參數來刪除所有斷點
    ->斷點進階
    1 break test.c:5 設定斷點到指定檔案
    2 break 在記憶體某一個位置出暫停
    3 break  if  來設定條件斷點
    4 condition   對已存在的斷點附上條件
    5 command 能在第n個斷點出設定命令
    開始調試
    0 run 程式開始執行
    1 step or s 逐步執行 
    2 next or n非進入式逐步執行,就是說,當調用其他函數時,不進入那個函數內部
    3 finish 一直運行到函數返回
    4 until 運行到函數某一行
    5 continue or cont 執行到下一個斷點或程式結束
    6 return  改動程式流程,直接結束當前函數,並將指定值返回
    設定變數
    set
    1 set i = 5 改動程式中一個變數的值
    2 set $i =5 來設定一個pdb環境裡自己的變數,該變數獨立於程式,也就是說只有gdb認識
    擷取程式資訊
    1 監視變數
      print /fmt     列印資訊
      fmt格式,有以下幾種
      ------------------------------
       x  十六進位
      ------------------------------
       d  十進位
      ------------------------------
       u 無符號數
      ------------------------------
       o 八進位
      ------------------------------
       t  二進位
      ------------------------------
       a 十六進位列印
      ------------------------------
       c 字元格式設定
      ------------------------------
       f   浮點數
      ------------------------------
    2 追蹤變數
      watch      追蹤被賦值動作  eg. i = 4;
            rwatch    追蹤讀動作 eg. b = i;
            awatch    追蹤所有動作
            del watchpoint .
      info display
      display
            show display
      del display
    3  監視記憶體
      x /
      Address能是記憶體位址或是指標,比如0x8799f000,p,&var
      fmt 由三部分組成 NFU,N表示要查看的長度,U為格式,其中有分為bhwg,分別表示以位元組,半字,字,雙字
      來顯示。
       eg.
       (gdb) x argv[0]
       0xbfffff61: 0x6d6f682f
       (gdb) x /10cb argv[0]
       0xbfffff61: 47 ’/’ 104 ’h’ 111 ’o’ 109 ’m’ 101 ’e’ 47 ’/’ 67 ’C’ 104 ’h’
       0xbfffff69: 97 ’a’ 114 ’r’
       (gdb) x /10tb
       12
       0xbfffff6b: 01101100 01100101 01110011 00101111
       01110111 01101111 01110010 01101011
       0xbfffff73: 01110000 01101100
       (gdb) x /10th
       0xbfffff7f:          
       0110101101101111 0111010000101111 0110000100000000
       01100010000000110001100000000 0110010000000000 0110010100000000 0110011000000000
       0xbfffff8f: 0110011100000000 0101011000000000
       (gdb)
    4 查看總的frame資訊
      backtrace 或 bt
      說明:frame是函數調用時候所產生的堆棧,儲存函數被調用的資訊
    5 選擇要查看的frame
         frame
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.