簡介
gdb是一個由GNU開源組織發布的、Unix/Linux操作系統下的、基于命令行的、功能強大的程序調試工具。相比于VS里面的圖形化調試工具,其功能更加強大。
安裝
sudo apt-get install gdb
調試步驟
- 編譯:gcc -g hello.c -o hello (在編譯選項加入 -g )
- 調試:gdb hello
- 使用gdb命令進行調試
常用命令
運行:
- run / r:運行程序,遇到斷點處停止
- continue / c:繼續執行,到下一個斷點處
- next / n:單步執行且不進入函數
- step / s:單步執行且進入函數
- until:在循環體中運行直到退出循環
- finish:運行程序直到當前函數完成返回
- call:調用程序中可見的函數并可傳參 - call func(params)
- enter(回車鍵):重復上次指令
- quit / q:退出gdb
斷點
- break n:在第n行設置斷點
- clear n:清楚第n行的斷點
- break func():在程序func()入口處設置斷點
- delete n:刪除第n個斷點
- disable n:暫停第n個斷點
- enable n:開啟第n個斷點
- info b:顯示當前斷點的設置情況
- delete breakpoints:清楚所有的斷點
查看源碼
- list / l:列出源代碼,默認10行 - list
- list n:以n行為中心列出前后10行
- list func():顯示該函數的源代碼
打印表達式
- print / p 表達式:打印表達式的值,表達式可以為變量、字符串、函數調用
- print &變量:查看變量所在地址(指針)
- x addr:查看addr地址的內存
- display 表達式:設置每次單步運行后輸出該表達式的值
- watch 表達式:監視表達式,當其改變時輸出前后變化
- whtatis:查詢變量或函數
- info function:查詢函數
- info locals:顯示當前堆棧頁的所有變量
- info registers:顯示當前寄存器的值
查詢運行信息
- where / bt:當前運行的堆棧列表
- bt backtrace:顯示當前調用堆棧
- up / down:改變堆棧顯示的深度
- set args參數:指定運行時的參數
- show args參數:查看設置好的參數
- info program: 查看程序是否在運行,進程號,被暫停的原因
分割窗口
- layout src:顯示源代碼窗口
- layout asm:顯示反匯編窗口
- layout split:顯示源代碼、反匯編窗口
- layout regs:顯示源代碼、反匯編、CPU寄存器窗口
- Ctrl + L:刷新窗口
- Ctrl + x + a:退出layout