再探gdb常用命令



前面已經有了一篇對gdb常常使用命令的總結。見 http://blog.csdn.net/u011848617/article/details/12838875 shell

這裏對眼下學過的gdb命令進行了較完整的整理。函數


一、使用gdb調試代碼,就要在編譯時加入-g選項。post

二、gdb -q —————— 啓動gdb時不輸出版權說明ui

三、gdb打開文件:
  (1)gdb filename;
  (2)先輸入gdb,而後在gdb命令行輸入file filename。.net

四、gdb選項(gdb中好多命令都有本身的簡寫字母):
   不輸入直接回車 ------------ 反覆運行上一條命令
   q(quit) ------------------- 退出gdb
   file filename ------------- 打開文件filename
   l(list) ------------------- 顯示10行代碼。若再次執行則顯示接下來10行代碼
   list 5,10 ---------------- 顯示第5到10行的代碼
   list test.c:5,10 -------- 顯示源文件test.c中第5到10行的代碼
   list get_sum -------------- 顯示get_sum函數週圍的代碼
   list test.c:get_sum ------- 顯示源文件test.c中get_sum函數週圍的代碼
   shell XXX ----------------- 執行shell命令XXX
   search/forward str -------- 從當前行向前查找第一個匹配的字符串str
   reverse-search str -------- 從當前行向後查找第一個匹配的字符串str
   r(run) -------------------- 執行程序
   help XXX ------------------ 查看命令XXX的用法
   help all ------------------ 查看所有命令的用法
   whatis 變量或表達式 ------- 顯示變量或表達式的數據類型
   set variable 變量=值 ------ 給變量賦值
   kill ---------------------- 結束當前程序的調試
   continue ------------------ 讓程序繼續執行,直到下一個斷點或者執行完爲止
   n(next) ------------------- 繼續運行下一條語句,遇到函數把函數看成一條語句來運行
   step ---------------------- 繼續運行下一條代碼,遇到函數會跟蹤進入函數
   nexti/stepi --------------- 單步運行一條機器指令
   watch 變量名 -------------- 設置變量監測點
   bt(backtrace) ------------- 顯示程序當前執行位置和對當前位置的棧跟蹤
   display 變量或表達式 ------ 加入觀察點。之後每次執行命令都會顯示相應變量或表達式的值
   undisplay num ------------- num爲設置的display編號,可以用info display獲取。不能用變量名命令行

五、設置斷點:
   b(break) 行號 ----------------------- 在第n行設置斷點
   break fun_name ---------------------- 爲函數fun_name設置斷點
   break 行號或函數名 if 條件 ---------- 程序在執行中。當條件知足時。在某行中斷暫停執行
   watch 條件表達式 -------------------- 程序執行中,知足條件時暫停執行,不需要寫行號
   info breakpoints -------------------- 查看當前所有的斷點
   disable 斷點編號 -------------------- 使斷點n失效
   enable 斷點編號 --------------------- 使斷點n有效
   clear ------------------------------- 刪除本行斷點(假設存在的話)
   clear 行號 -------------------------- 刪除此行斷點
   clear 函數名 ------------------------ 刪除該函數的斷點
   delete 斷點編號 --------------------- 刪除指定編號的斷點調試

六、print命令:
   print XXX ------------------------------- 打印輸出XXX的值
   print 變量 = 值 ------------------------- 對變量賦值
   print 表達式@要打印值的個數n ------------ 打印以表達式值開始的n個數blog

七、watch和display設置監測點的差異:
   watch監測僅僅有當監測的變量值發生變化時才顯示變量,而且舊值和新值都會顯示。
   display監測每一次執行命令都會顯示變量的值,僅僅會顯示變量的最新值。字符串

相關文章
相關標籤/搜索