一、基本指令
程式設計設定: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 將加入到庫檔案的搜尋目錄中,鏈結時在搜尋標準標頭檔案之前先在進...