2014年2月21日

GDB 參數


程式編譯時需啟動 debug flag: ex. gcc hello.c -o hello -g

  • file : 載入執行檔
  • break : 設定中斷點 ( n 為正整數 )
    • break n (中斷於第 n 行)
    • break +n (中斷於目前之後的 n 行)
    • break func (中斷於 func function)
    • break file.c:n (中斷於 file.c 的第 n 行)
    • info break : 查看已經設定多少個 break point
  • clear : 清除中斷點
    • clear n
    • clar func
  • delete : 清除中斷點 ( m 為正整數 )
    • delete m (刪除第 m 個中斷點)
  • disable : 暫時關閉中斷點
  • enable : 啟動 disable 的中斷點
  • return : 從 function return
  • attach pid : 指定 trace 的 child process
  • detach pid : 反向 attach 的動作
  • set args str : 設定 *argv[ ]
  • run : 開始執行程式
  • continue : 中斷點後繼續執行,直到下一個中斷點或程式節數
  • next : 繼續執行下一行 (若是 function, 執行完整的 function )
    • ex. 設定開始一行一行追蹤的中斷點: break n; 然後執行程式 (run); 接著就可以使用 next 一行一行追蹤
  • step : 類似 next, 只是在 function 中也是一行一行跑
  • until : break 迴圈
  • print :
    • print variable : 印出 variable 變數的值
    • print &variable : 印出 variable 變數的位址
    • print *variable : 印出 *variable 指標變數所指的記憶體內容值
    • print /x variable : 指定 print 以十六進位格式輸出 variable (格式: x 十六進位, d 有號整數, u 無號整數, o 八進位 , t binary , a 位址 , c 字元, f: 浮點數 )
  • diaplay variable : 每次 step/next 都會輸出 variable 的值

更多進階 GDB 操作 (ex. multithread, signal handler, remote debug ) 可參考 【 [1] Chap. 6, 進階 GDB 】

Reference
  1. 黃郁熙, 用Open Source工具開發軟體新軟體開發關念, http://www.study-area.org/cyril/opentools/opentools/book1.html
  2. 除錯工具, http://www.study-area.org/cyril/opentools/opentools/debug.html
  3. ckhung GDB, http://people.ofset.org/~ckhung/b/c/gdb.php
  4. GDB Toturial, http://www-2.cs.cmu.edu/~gilpin/tutorial/
  5. GDB manual, http://www.gnu.org/software/gdb/documentation/
  6. Debugging with GDB, http://www.delorie.com/gnu/docs/gdb/gdb_toc.html
  7. RMS's gdb Debugger Tutorial, http://www.unknownroad.com/rtfm/gdbtut/gdbtoc.html
  8. Guide to Faster, Less Frustrating Debugging,  http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Debug.html
  9.  

沒有留言:

張貼留言

歡迎留言