我們除錯程式,經常用到gdb來進行除錯程式。今天有空講一下他的基本用法。也讓自己作個記錄
sort.c
#include #include #include #define data_array_length 12
基本常用命令
gdb 常用命令
(1) gdb 可執行檔案 : 表示對某個檔案進行除錯
(2) b 函式名/行數 : 在某個函式名或行數前設定斷點
(3) run/r : 表示開始執行,如果是正在除錯的程式的話,表示再次進行除錯
(4) n/next : 表示執行下一行語句
(5) l/list : 列出原始碼預設10行(當前位置的上下共10行)
list 行號 : 列出行號上下共10行的原始碼
list 函式名 : 列出函式名上下共10行的原始碼
(6) s/step : 表示單步執行,進入函式
(7) p /x 變數名 : 按16進製制輸出變數的值
/d : 按10進製
/o : 按八進位制
(8) set var 變數名=值 : 設定變數的值
(9) bt(backtrace) : 檢視各級函式呼叫及引數,簡寫bt
(10)q/quit : 退出
(11)finish : 連續執行到當前函式返回為止,然後停下來等待命令
(12)continue/c : 跳轉到下個斷點,或者跳轉到觀察點
(13)ptype 變數名 : 可以檢視變數的型別,簡寫為pt
(14)wat
如可以監控該變數/記憶體值是否被程式讀/寫情況。
有三種方法:
一旦expr的值有變化時,將停住程式。
2.rwatch expr
當expr被讀時,停住程式。
3.awatch expr
當expr被讀或被寫時,停住程式。
watch使用步驟:
1. 使用break在要觀察的變數所在處設定斷點;
2. 使用run執行,直到斷點;
3. 使用watch設定觀察點;
4. 使用continue觀察設定的觀察點是否有變化。
(15)start : 開始執行程式,停在main函式第一行語句前面等待命令
(16)info watchpoints : 列出所有觀察點
info breakpoints : 檢視當前設定的所有斷點
(17)d/delete [breakpoinsts num] [rang...]
d/delete : 刪除所有斷點
d/delete num : 刪除breakpoints為num的斷點
d/delete num1-num2 : 刪除breakpoints為num1-num2的斷點
(18)enable num : 啟用num號斷點
(19)disable num : 關閉num號斷點
(20)u/until : 結束當前迴圈
gdb --args ./sort arg1 arg2 可以帶引數除錯
gdb基本使用方法簡介
gdb基本使用方法 前言程式 中的錯誤可分為數類,除了最容易除錯的語法錯誤,編譯程式會告訴你錯誤所在外,大部分的錯誤都可以歸類為執行時錯誤。gdb 的功能便是尋找執行時錯誤。如果沒有除錯程式,我們只能在程式中加入輸出變數值的指令來了解程式執行的狀態。有了 gdb 除錯程式,我們可以設定在任何地方停止...
gdb使用方法
一 程式例子 test.c include int fun int n return sum int main printf d n sum int ret 0 ret fun sum printf d n ret return 0 二 編譯 g表示開啟除錯開關 sudo gcc g test.c ...
gdb使用方法
教程見 編譯程式時需要加上 g,之後才能用gdb進行除錯 gcc g main.c o main gdb中命令 gdb tui a.out 除錯中顯示源 gdb help 檢視命令幫助,具體命令查詢在gdb中輸入help 命令,簡寫h gdb start 單步執行,執行程式,停在第一執行語句 gdb...