GDB常用指令

2021-09-08 07:15:15 字數 2159 閱讀 6641

一、基本指令

程式設計設定:1.需要加-g,不能有-s,如g++ -g main.cpp

常用指令

(gdb)gdb e(或者輸入gdb) (gdb)file e //進入gdb,執行e檔案

(gdb)info breakpoints //可使用info檢視斷點相關的資訊

(gdb)break 7 //以行號設定斷點

(gdb)break function_name //以函式名設定斷點

(gdb)clear 行號 //刪除這行的斷點

(gdb)clear 函式名 //刪除該函式的斷點

(gdb)delete breakpoints n //刪除第n次(指定編號)設定的斷點

(gdb)clear //刪除程式中所有的基於行設定的斷點

(gdb)delete //刪除程式中所有的斷點

(gdb)r //執行程式

(gdb)n //單步除錯

(gdb)c //執行到下乙個斷點

(gdb)print 變數或表示式 //列印變數或表示式當前的值。

(gdb)print 變數=值 //對變數進行賦值

(gdb)whatis 變數或表示式 //顯示變數型別

(gdb)set variable 變數=值 //變數賦值

二、斷點管理

1.以行號設定斷點

(gdb)break 7

(gdb)run

2.以函式名設定斷點

(gdb)break function_name

(gdb)run

3.以條件表示式設定斷點

(gdb)break 7 if i99

(gdb)run

4.另一種,以表示式設定斷點的方法

(gdb)watch i99

這個命令必須在變數i被定義之後才會成功執行,為了解決這個問題,首先在變數 i 被定義的後一行設定中斷,然後使用run命令執行程式,程式暫停後就可以使用watch i==99設定斷點了。

##############################

單步執行

(gdb)next

#############################

檢視當前設定的斷點資訊

(gdb)info breakpoints

###############################

使中斷失效(斷點仍然存在)或有效

(gdb)info breakpoints

(gdb)disable b_id //使中斷失效,b_id 為中斷編號

(gdb)info breakpoints

(gdb)enable b_id //使中斷有效,b_id 為中斷編號

(gdb)info breakpoints

##############################

刪除斷點

clear : 刪除程式中所有的斷點

clear 行號 : 刪除這行的斷點

clear 函式名 : 刪除該函式的斷點

delete b_id1 b_id2 … : 刪除指定編號的斷點

##################################

檢視和設定變數值

1.print命令

print 變數或表示式:列印變數或表示式當前的值。

print 變數=值:對變數進行賦值。

print 表示式@要列印的值的個數n:列印以表示式開始的n個數

2.whatis命令:顯示某個變數或表示式值的資料型別

whatis 變數或表示式

例子:3.set命令:給變數賦值

set variable 變數=值

【提示】set命令還可以針對遠端除錯進行設定,可以用來設定gdb一行的字元數等。

4.多執行緒

檢視執行緒的一些資訊

1.檢視程序:info inferiors

2.檢視執行緒:info threads

3.檢視執行緒棧結構:bt

4.切換執行緒:thread n(n代表第幾個執行緒)

5.只執行當前程序:set scheduler-locking on

6.所有執行緒並行:set scheduler-locking off

7.切換執行緒 :thread id(1

,2,3…)

gdb 常用指令

除錯程式需要傳入引數 在執行前 set args 需要傳入的引數 檢視 list 從main函式開始檢視 show listsize 顯示當前 l 檢視 會顯示多少行 set listsize 20 設定 l 顯示為20行 list 行號 顯示該行號的上下文 list 函式名 檢視函式 list 檔...

gdb除錯常用的指令

關於第一次使用了gcc後,我做了一些總結 以乙個題目為例 對於兩組使用者輸入的字串進行比較,長度自定,輸出相同的字元。下面是一些gdb常用的指令 首先是要進入gdb除錯環境,先通過gcc g o newname name.c 生成可執行檔案 gdb newname進入gdb除錯環境 退出gdb ob...

gcc和gdb的常用指令

命令 作用 o 將命令的執行結果寫入檔案中,預設為a.out e預處理操作,生成預處理檔案 s編譯操作,生成組合語言目標檔案 c彙編操作,生成可重定位目標檔案 i 將加入到頭檔案的搜尋目錄中,鏈結時在搜尋標準標頭檔案之前先在進行搜尋 l 將加入到庫檔案的搜尋目錄中,鏈結時在搜尋標準標頭檔案之前先在進...