gdb 常用指令備忘錄

gdb <ExeFile>

-q 啟動時不要印版本訊息

 

file <Exefile> 指定debug的執行檔

set var <var>=<xx> 設var等於xx

set args <para> 設定main()參數

show args 顯示args的內容

layout src 分割視窗顯示程式碼

set listsize <n> 設定使用list指令一次列出n行

 

start 執行程式,停在main()的第一行

r (run) 執行程式

n (next)執行下一列,不會進入call funtion()

s (step)行下一步,會進入call funtion()

c (continue)執行到下一個中斷點停止

u (until) 跑完迴圈

按 [Enter] 可重覆執行上個指令

 

l (list) 列出當前位置的上下 5 行的程式碼

l <n> 列出第n行上下 5 行的程式碼

l <n,m> 列出第n~m行的程式碼

l <FuncName> 列出函數程式碼

 

p <var> (print)查看變數的內容 

p <var>[n]@m 查看陣列索引n~m的內容

p *argv@argc 查看 main() 函式裡參數內容

p <var>=<xx> 設var等於xx

p <func> 查看function位址

whatis <var> 查看變數的型態

x/s <*var> 查看指標所指的字串

 

b <n> (breakpoint)設中斷點在第n行

b <FuncName> 設中斷點在某function

b <n> if i==5 設定條件中斷點

watch <var> 觀察某個變數的內容

 

i <b> (info)查看中斷點訊息(和command)

i variables 列出目前scope所可見的global和local變數

locals 查看所有區域變數的內容

i frame

 

display 每次遇到中斷時,顯示變數的內容

display <var>

undisplay 關閉自動顯示變數的內容

 

ena (enable) 暫時開啟某功能

dis <display> <2> (disable) 暫時取消顯示第二個變數的內容

dis <b> <2> 暫時取消編號2的中斷點

d <n> (delete) clear 刪除編號n的中斷點

 

bt <n>(backtrace) 追蹤堆疊,顯示上層所有 frame 的簡略資訊

f (frame) 顯示正在執行的行數、副程式名稱、及其所傳送的參數等等

f <n> 顯示上n層的 frame 訊息caller

up <n> 回到上n層的frame

do (down)跳到下層的frame

ret (return)終止執行該function,回上一層frame的呼叫點

fin (finish)執行完該function,回上一層frame的呼叫點

void foo2()
{
    ... //frame 0 目前執行到這邊
}

void foo1()
{
    foo2 //frame 1
}

main()
{
    foo1(); //frame 2
}

 

command <n> 第n個中斷點時,執行指令動作

Type commands for when breakpoint 1 is hit, one per line.
End with a line saying just "end".
>p i                # 顯示 i 的內容
>p a[i]             # 顯示 a [i]
>c                  # 然後續繼執行
>end                # 輸入完成

 

attach <pid> debug一個已經正在執行的程式

detach

shell <cmd> 執行終端機指令

Kill 結束正在debug的程式

q 離開gdb

 

help <cmd> 查詢指令

 

strip ExeFile 清除程式debug訊息

 

參考網址:

1. Debugging with GDB (入門篇) - Study-Area

2. Linux 除錯利器 - GDB 簡介-今天的 Tetralet 又在唧唧喳喳了

3. GDB常用指令-Hsian Studio

4. gdb 初步心得-fcamel 技術隨手記

5. gdb常用功能筆記-碼機的強迫解說教室

6. gdb常用命令-gnuhpc的专栏

7. Linux C编程一站式学习-第 10 章 gdb

posted @ 2014-04-01 18:17  a-jay  阅读(353)  评论(0编辑  收藏  举报