這里以簡單的求1到100數字和為例
文章目錄
- 1.給程式添加除錯資訊(gcc -g)
- 2.除錯基本操作
- 斷點
- 監視
1.給程式添加除錯資訊(gcc -g)

如果直接gcc生成可執行程式的話是沒有除錯資訊的,無法進行除錯


因為Linux中程式生成默認生成可執行程式為動態鏈接Release版本,不能進行除錯
可以在 gcc后加 -g選項來生成Debug版本

如圖,添加了除錯資訊后可執行程式明顯變大

2.除錯基本操作
開始除錯 gdb+檔案名
gdb擁有指令記憶功能,按回車默認執行上一次執行的命令
1.l(list)+n:從第n行開始顯示代碼,l表示繼續顯示代碼
2.r(run)開始除錯或重新除錯(到斷點位置)
3.n(next):下一行(逐程序,不會進去函式內)
4.s(step):下一行(逐陳述句,會進函式內)
5.until+n:直接跳轉到第n行(如果第n行代碼是無效的eg:空行或者是return等,則跳轉到最近的一行有效代碼上)、
6.finish:結束正在除錯的函式
7.c(continue):跳轉到下一個最近的斷點處(下面沒有斷點就結束)
8.set var +變數:修改變數的值
9.bt:查看呼叫堆疊

斷點
1.b+n:在第n行上打斷點
b+函式名:給某個函式打斷點
2.info+b:查看所有的斷點資訊
3.d+n:洗掉序號為n的斷點(注意不是第n行的斷點)

其中y表示斷點是開啟狀態
4.disable+斷點序號:(不洗掉斷點)禁用斷點

n表示斷點禁用
5.enable+斷點序號:重新啟用斷點
監視
1.p§+變數:查詢此時變數的值
p§+&變數:查詢變數的地址
2.display+(&)變數:將變數添加到監視串列(在變數生命周期中可以一直看到它的值)
3.undisplay+n:洗掉監視串列中序號為n的變數
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295171.html
標籤:其他
