gdb調試


---恢復內容開始---

1.gdb調試的是可執行文件,在gcc編譯時加入 -g ,告訴gcc在編譯時加入調試信息,這樣gdb才能
調試這個被編譯的文件 gcc -g  tesst.c -o test
2.  命令格式:gdb 程序文件名 eg:gdb test file test
gdb -q test 啟動時不輸出版權說明
quit 退出gdb,結束調試
list: 查看程序源代碼,顯示10行
list 5,10: 顯示5到10行的代碼
list test.c:5, 10:顯示源文件5到10行的代碼,在調試多個文件時使用
list get_sum: 顯示get_sum函數周圍的代碼
list test,c get_sum: 顯示源文件get_sum函數周圍的代碼,在調試多個文件時使用
reverse-search  字符串 用來從當前行向前查找第一個匹配的字符串
 
run 程序開始執行
help list/all 查看幫助信息
 
break 設置斷點
break 7 在第七行設置斷點
break get_sum 以函數名設置斷點
break 行號或者函數名 if 條件 以條件表達式設置斷點
watch 條件表達式 條件表達式發生改變時程序就會停下來
awatch 和watch類似,在表達式值發生改變或者表達式值被讀取時,暫停
 
next 繼續執行下一條語句 ,會把函數當作一條語句執行
step 繼續執行下一條語句,會跟蹤進入函數,一次一條的執行函數內的代碼
nexti 單步執行一條機器指令 通常一條語句由多條機器指令構成,不進函數
stepi 單步執行一條機器指令, 跟蹤進入函數
 
info breakpoints 查看當前設置的中斷點
Num 斷點編號
Type 類型
breakpoints 說明是中斷
Disp 指示中斷點在生效一次后是否就失去作用,是為dis, 不是為keep
Enb 表明當前中斷點是否有效,是為y,不是為n
Address 表示中斷所處的內存地址
What 列出中孤單發生在哪個函數的第幾行
stop only if result == 5050 表明這是一個條件中斷
disable 斷點編號 是使某個斷點失效
enable  斷點編號 使某個斷點恢復
 
clear 刪除程序中所有的斷點
clear 行號: 刪除此行的斷點
clear  函數名 刪除該函數的斷點
clear 斷點編號 刪除指定編號的斷點,若要一次刪除多個斷點,各個斷點編號以空格隔開
 
print 一般用來打印變量或表達式的值
print 變量或表達式 打印變量或表達式當前的值
print 變量 = 值 對變量進行賦值
print  表達式@n 打印以表達式值開始的n個數
whatis 顯示某個變量或表達式的數據類型
 
set 給變量賦值
set variable 變量 =值
continue 讓程序繼續執行下去
 
kill 用於結束當前程序的調試
 
 

---恢復內容結束---

1.gdb調試的是可執行文件,在gcc編譯時加入 -g ,告訴gcc在編譯時加入調試信息,這樣gdb才能
調試這個被編譯的文件 gcc -g  tesst.c -o test
2.  命令格式:gdb 程序文件名 eg:gdb test file test
gdb -q test 啟動時不輸出版權說明
quit 退出gdb,結束調試
list: 查看程序源代碼,顯示10行
list 5,10: 顯示5到10行的代碼
list test.c:5, 10:顯示源文件5到10行的代碼,在調試多個文件時使用
list get_sum: 顯示get_sum函數周圍的代碼
list test,c get_sum: 顯示源文件get_sum函數周圍的代碼,在調試多個文件時使用
reverse-search  字符串 用來從當前行向前查找第一個匹配的字符串
 
run 程序開始執行
help list/all 查看幫助信息
 
break 設置斷點
break 7 在第七行設置斷點
break get_sum 以函數名設置斷點
break 行號或者函數名 if 條件 以條件表達式設置斷點
watch 條件表達式 條件表達式發生改變時程序就會停下來
awatch 和watch類似,在表達式值發生改變或者表達式值被讀取時,暫停
 
next 繼續執行下一條語句 ,會把函數當作一條語句執行
step 繼續執行下一條語句,會跟蹤進入函數,一次一條的執行函數內的代碼
nexti 單步執行一條機器指令 通常一條語句由多條機器指令構成,不進函數
stepi 單步執行一條機器指令, 跟蹤進入函數
 
info breakpoints 查看當前設置的中斷點
Num 斷點編號
Type 類型
breakpoints 說明是中斷
Disp 指示中斷點在生效一次后是否就失去作用,是為dis, 不是為keep
Enb 表明當前中斷點是否有效,是為y,不是為n
Address 表示中斷所處的內存地址
What 列出中孤單發生在哪個函數的第幾行
stop only if result == 5050 表明這是一個條件中斷
disable 斷點編號 是使某個斷點失效
enable  斷點編號 使某個斷點恢復
 
clear 刪除程序中所有的斷點
clear 行號: 刪除此行的斷點
clear  函數名 刪除該函數的斷點
clear 斷點編號 刪除指定編號的斷點,若要一次刪除多個斷點,各個斷點編號以空格隔開
 
print 一般用來打印變量或表達式的值
print 變量或表達式 打印變量或表達式當前的值
print 變量 = 值 對變量進行賦值
print  表達式@n 打印以表達式值開始的n個數
whatis 顯示某個變量或表達式的數據類型
 
set 給變量賦值
set variable 變量 =值
continue 讓程序繼續執行下去
 
kill 用於結束當前程序的調試
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM