簡述
GDB, the GNU Project debugger, allows you to see what is going on 'inside' another program while it executes -- or what another program was doing at the moment it crashed.
GDB, GNU專案除錯器,允許你看到在另一個程式執行時“內部”發生了什么——或者另一個程式在崩潰時正在做什么,
使用
準備作業
要想使用gdb進行原始碼級別的除錯,需要用gcc編譯(不是鏈接)時候加上-g
選項,這樣除錯生成的程式才能夠顯示原始碼,否則只能進行匯編級別的除錯,
通常進行編譯時候不止加入-g
,還會關閉編譯器優化-O
,另外,-Wall
可以在編譯時候發現一些問題,避免一些不必要的bug,
開始
首先通過gdb 程式名
來啟動gdb去除錯該程式,
命令 | 說明 | 示例 |
---|---|---|
基本 | ||
q/quit | 退出 | |
help | 幫助,可具體指定哪個命令 | help info |
set args 引數... | 給程式設定引數 | set args 1 2 |
show args | 顯示當前 | |
start | 程式運行并停在第一行 | |
r/run | 程式運行并到斷點才停止 | |
c/continue | 繼續運行直到下一個斷點 | |
n/next | 執行一條一句(不會進入函式體) | |
s/step | 執行一條一句(進入函式體) | |
until | 繼續運行至退出回圈或遇到下一個斷點 | |
finish | 繼續運行至跳出函式體或遇到下一個斷點 | |
查看代碼相關 | ||
l/list | 顯示當前檔案代碼 | |
l 行號 | 顯示指定行號前后文 | list 10 |
l 函式名 | 顯示指定函式 | list main |
l 檔案名:行號 | 顯示指定檔案代碼 | list ot.cpp:1 |
l 檔案名:函式名 | 顯示指定檔案代碼 | list ot.cpp:fun |
show list/listsize | 顯示list時候的行數 | |
set list/listsize 行數 | 設定list時候顯示的行數 | set list 20 |
斷點 | ||
b/break 行號 | 在當前檔案指定行打斷點 | b 10 |
b 函式名 | 在當前檔案指定函式打斷點 | b fun |
b 檔案名:行號 | 在指定檔案指定行打斷點 | b ot.cpp:10 |
b 檔案名:函式名 | 在指定檔案指定函式打斷點 | b ot.cpp:fun |
b 位置 if 條件 | 設定條件斷點(一般用于回圈位置) | b 23 if i==2 |
i/info b | 查看斷點資訊 | |
d/del/delete 斷點編號 | 洗掉指定斷點 | d 2 |
dis/disable 斷點編號 | 使指定斷點無效 | dis 2 |
ena/enable 斷點編號 | 使指定斷點生效 | ena 2 |
變數 | ||
p/print 變數名 | 列印變數值 | p var |
ptype 變數名 | 列印變數型別 | ptype var |
set var 變數名=值 | 設定變數值 | set var i=6 |
display 變數名 | 每次暫停自動列印變數的值 | display var |
i/info display | 查看自動列印變數串列 | |
undisplay 編號 | 取消自動列印 | undisplay 2 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550106.html
標籤:其他
上一篇:token驗證
下一篇:day01-專案介紹與環境搭建