【Linux C】第九章 GDB調試技術

使用gdb之前,編譯程序是需要加 –g 選項。
1. List 不帶參數顯示main前後的10行內容
a) list <line-number>
b) list  <line-number1,line-number2>
2. run  <arg1  arg2  arg3…….> 其參數可以包括輸入輸出重定向及通配符。
3. show args 查看上次運行時設置的參數(也是下次運行時的缺省參數)。
4. set  args  change-arg1  change-arg2 用於重新設置參數。
5. 關於斷點 breakpoint
a) Break  <line-number> 設置某一行爲斷點。
b) 避免將斷點設置在空行或者註釋行上。否則被就近設置在該行下第一個有效語句行。
c) Break  <function-name> 設置某一函數入口爲斷點。程序執行至調用函數前停止。
d) Break  <line-number or func> if  <conditional expression> 當在此斷點表達式爲真時,啓動斷點功能。
e) Break  <filename:line-number or  filename:func-name> 在某個源文件下設斷點。
f) Info break 查看斷點信息:num, info,disp, enable,address,what等狀態。
g) Delete breakpoint  <point-number>  刪除已設置對應num斷點
h) Enable  breakpoint <point-number>  disable breakpoint <point-num> 使能/禁止對應斷點。
i) Clear 無參數:表示刪除上次停止處斷點。 Clear <num> 刪除指定行上的所有斷點。
j) Watch 爲觀察點(數據斷點)。 Watch  <condition>。  斷點是在cpu到某一地址取指令時發生中斷。數據斷點CPU到某一地址去讀寫數據時中斷。
6. Next 用來一步步執行for 循環 
7. Step 單步執行。
8. Gdb下運行shell命令: shell  <command> <arg1 … >
9. print
a) Print  <variable-name> 查看當前作用域&生存期下的變量。
b) Print <file::variable> 或 print <function::variable> 局部變量全局變量衝突時,查看某文件某函數下的變量。Eg.  print  ‘file2.c’::sum::x
c) 對程序中函數調用: print  function(arg1,arg2..) 調用時指定形參的值。
d) Print <expression>計算/查看 表達式的值(根據當前常量變量函數等),但不可以使用宏。 
e) Print <array-name>查看數據所有元素 print *array@length 查看以array地址開始長度爲length的內存。
f) 變量輸出格式:x(16)、d(10)、u(16)、o(8)、t(2)、a(16)、c(char)、f(float).                       eg.    p/c i
10. Examine 查看內存  examin /nfu <address>
a) N 表示向後顯示n個單位
b) F 表示輸出格式 s表示字符串,i表示指令地址,其餘參考print輸出格式。
c) U表示每個單位字節數 b單字節 h雙字節 w四字節g八字節。
11. Display/format expression 單步跟蹤時自動顯示變量。Format控制輸出格式,參考print。
12. $pc 表示當前指令的地址。 I 可以表示輸出格式爲機器指令碼。Eg。 display/I $pc
13. Undisplay 刪除所有自動顯示。Delete display <disp-numbers> 刪除指定編號。使能/禁止指定編號:Disable/enable display <disp-numbers>
14. Info display 查看display情況。
15. Set/show  print  address/array/elements/null-stop/pretty/union   on/off  print的設置選項。
16. Print的歷史記錄,$1,$2…….
17. 查看寄存器
a) Info registers  查看除浮點寄存器外所有寄存器
b) Info all-registers 查看所有寄存器
c) Info registers <registers-name> 查看指定寄存器的情況。
18. Gdb可以使用環境變量。類似shell。
a) Eg、set  $i=0
    Print bar[i++]->contents
19. Info locals 查看局部變量
20. Continue  程序繼續執行,允許自然死亡。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章