運行
- run(r),遇到斷點處聽停止運行,等待下一步命令;
- continue(c),繼續運行到下一個斷點或結束;
- next(n),單步調試,遇到函數調用不進函數體,直接返回結果;
- step(s),但不調試,遇到函數調用進入函數體;
- until,在循環體重調試時,可以直接跳出循環體;
- until+行號,運行至某行;
- finish,運行程序,知道當前函數結束返回值,打印返回時的堆棧地址和返回值及參數等信息;
- call 函數(參數),調用程序中可見的函數;
- quit(q),退出gdb。
設置斷點
- break+行號(b+n),在第n行出設置斷點;
- break+行號 if (條件語句) (b+n if (i>9)),條件斷點,滿足條件時停止;
- break+函數名(b+func),在函數的入口處設置斷點;
- delete 斷點號n,刪除第n個斷點;
- disable斷點號n,暫停第n個斷點;
- enable短點號n,開啓第n個斷點;
- clear 行號n,清除第n行斷點;
- info b,顯示當前程序的斷點設置情況;
- delete breakpoints,清除所有斷點;
查看源代碼
- list(l),顯示程序源代碼,默認每次顯示10行;
- list+行號,顯示行號前後10行代源碼;
- list+函數名,顯示當前函數的源代碼;
- list,接着上一次命令繼續顯示源代碼;
打印表達式
- print 表達式(p+表達式);打印有效表達式的值,可以是函數調用;
- watch 表達式,設置一個監視點,表達式被改變,gdb將終止調試;
- whatis,查詢變量和函數;
- info function,查詢所有函數;
- info locals,顯示當前堆棧頁的所有變量;
查看運行信息
- where/bt,顯示當前運行的堆棧列表;
- bt backtrace,顯示當前調用的堆棧;
- up/down 改變當前棧顯示的深度;
- set args 參數,指定運行時的參數;
- show args 參數,查看設置的參數;
- info program,查看程序是否在運行,進程號,或被暫停的原因;
多窗口顯示
- layout,分割窗口,一遍測試,一遍查看代碼;
- layout src,顯示源碼;
- layout asm,顯示反彙編;
- layput regs,顯示源代碼/反彙編和CPU寄存器;
- layout split,顯示源代碼和反彙編窗口;
- Ctrl+L,刷新窗口。