gdb通常和gcc命令一起使用,編譯選項加入-g
才可使可執行檔案處於debug模式。
而處於debug模式的可執行檔案,gdb才能對每條指令找到它對應源**的行號。
gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps] [-tty=dev]
[-s symfile] [-e prog] [-se prog] [-c core] [-x cmds] [-d dir]
[prog[core|procid]]
r重頭執行,c繼續執行。gdb [可執行檔案]:選中可執行程式,進入gdb的debug模式;
(gdb) b(breakpoint):用法:b 函式名 :對此函式進行中斷 ;b 檔名:行號;
(gdb) run:啟動程式,執行至程式的斷點或者結束;
(gdb) l(list):用法:l funcname,制定函式的原始碼。或者l linenum,顯示指定行周圍的原始碼。或l -,顯示當前行前面的原始碼。或l,顯示當前行後面的原始碼;
(gdb) s(step):進入函式,逐語句執行;
(gdb) n(next):不進入函式,逐過程執行;
(gdb) p(print):列印顯示變數值;
(gdb) set variable=value,為變數賦值;
(gdb) kill:終止除錯的程式;
(gdb) h(help):列出gdb詳細命令幫助列表;
(gdb) clear filename.c:30:清除30行處的斷點;
(gdb) info break:顯示斷點資訊;
(gdb) delete 斷點編號:斷點編號是info break 後顯示出來的;
(gdb) bt(backtrace):回溯到段出錯的位置;
(gdb) frame 幀號:幀號是bt命令產生的堆疊針;
(gdb) q:退出;
b,打斷點。
b 函式名,或者b *位址以條件表示式設定斷點
(gdb)break 7 if i==99檢視當前設定的斷點資訊
delete可刪除單個斷點。
delete 5也可刪除乙個斷點的集合,這個集合用連續的斷點號來描述。
delete 1-10info registers,顯示所有的暫存器,可簡寫為i r。序號的獲取,用上面的info breakpoints即可。
info registers eax,只顯示%eax,可簡寫為i r eax。
檢視變數
p 變數名
x 按十六進製制格式顯示變數。按二進位制列印乙個浮點數,定義方式為【double x】。d 按十進位制格式顯示變數。
u 按十六進製制格式顯示無符號整型。
o 按八進位制格式顯示變數。
t 按二進位制格式顯示變數。
a 按十六進製制格式顯示變數。
c 按字元格式顯示變數。
f 按浮點數格式顯示變數。
x 位址,或x &變數名,檢視記憶體內容。
格式尾數,b表示單位元組,h表示雙位元組,w表示四位元組,g表示八字節。gdb預設w,4字,32位。
當我們指定了位元組長度後,gdb會從指記憶體定的記憶體位址開始,讀寫指定位元組,並把其當作乙個值取出來。
同乙個作者的兩篇文。
gdb除錯命令
一 gdb常用命令簡介 rrun 執行.程式還沒有執行前使用 c cuntinue 執行到下一斷點處 qquit 退出tab tab命令補全功能 h help幫助s step 跟入函式 nnext 執行下一行的 如果是函式呼叫,也當作一行 執行到此函式返回 b breakpoint 設定斷點,用法 ...
GDB除錯命令
gdb的命令很多,本文不會全部介紹,僅會介紹一些最常用的。在介紹之前,先介紹gdb中的乙個非常有用的功能 補齊功能。它就如同linux下 shell中的命令補齊一樣。當你輸入乙個命令的前幾個字元,然後輸入tab鍵,如果沒有其它命令的前幾個字元與此相同,shell將補齊此命令。如果有 其它命令的前幾個...
GDB除錯命令
用gdb除錯程式 gdb概述 gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。或許,各位比較喜歡那種圖形介面方式的,像vc bcb等ide的除錯,但如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc bcb的圖形化偵錯程式更強大的功能。所謂 寸有所長,尺有所短 就是這...