溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

GDB如何調(diào)試

發(fā)布時(shí)間:2021-11-25 09:12:50 來(lái)源:億速云 閱讀:206 作者:小新 欄目:編程語(yǔ)言

小編給大家分享一下GDB如何調(diào)試,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一、Linux程序gcc編譯步驟:

Gcc編譯過(guò)程主要的4個(gè)階段:

l 預(yù)處理階段,完成宏定義和include文件展開等工作;(.i)

l 根據(jù)編譯參數(shù)進(jìn)行不同程度的優(yōu)化,編譯成匯編代碼(.s.S)

l 用匯編器把匯編代碼進(jìn)一步生成目標(biāo)代碼(.o)

l 用連接器把生成的目標(biāo)代碼和系統(tǒng)或用戶提供的庫(kù)連接起來(lái),生成可執(zhí)行文件

格式:

l gcc -E test.c//預(yù)處理階段

l Gcc -S test.c//編譯階段

l Gcc -c test.c//匯編階段

l Gcc -o test test.c//鏈接階段

二、Linux程序gdb調(diào)試步驟:

Gdb的功能:

l 設(shè)置斷點(diǎn)

l 監(jiān)視程序變量的值

l 程序的單步執(zhí)行

l 顯示、修改變量的值

l 顯示、修改寄存器

l 查看程序的堆棧情況

l 遠(yuǎn)程調(diào)試

Gdb調(diào)試過(guò)程:

1、程序經(jīng)過(guò)預(yù)處理后,即進(jìn)入編譯階段,進(jìn)入編譯階段,首先聲明編譯:

2、格式:gcc-o test test.c -g

3、進(jìn)入編譯:gdb test

4、顯示需要編譯調(diào)試的源程序:l(list)//list filename

5、設(shè)置斷點(diǎn):b(break)行號(hào)

6、查看設(shè)置的斷點(diǎn):info b

7、運(yùn)行調(diào)試程序:run

8、跳到下一個(gè)斷點(diǎn):c(continue)

9、單步運(yùn)行的話使用:n(next)/s(step into)跳到函數(shù)體 //區(qū)別在與:next執(zhí)行函數(shù)體,而step不執(zhí)行函數(shù)體

10、調(diào)試過(guò)程中查看某個(gè)變量的變化:print i (每次都要手動(dòng)設(shè)置)//display i(設(shè)置一次一直尾隨,直到用“undisplay 變量標(biāo)號(hào)” 停止)

11、退出當(dāng)前的調(diào)試使用finish 跳出函數(shù)

12、清楚斷點(diǎn) clear 行號(hào)

13、Delete 斷點(diǎn)信息序號(hào)// 刪除所有斷點(diǎn)或設(shè)置的要?jiǎng)h除的斷點(diǎn)

14、退出調(diào)試 q

15、b num if i==20 設(shè)置斷點(diǎn)的觸發(fā)條件

16、condition num i==50 改變斷點(diǎn)的觸發(fā)條件

17、GDB中源代碼查看命令

list /l 行號(hào)或函數(shù)名 //查看指定位置代碼

list <linenum> //顯示程序第linenum行的周圍的源程序

list <function> //顯示函數(shù)名為function的函數(shù)的源程序

list // 顯示當(dāng)前行后面的源程序

list <filename:funtion> //顯示哪個(gè)文件中的哪個(gè)函數(shù)的源程序

eg: list src/fun1.c:fun1

list <filename:linenum> //哪個(gè)文件的哪一行周圍的源程序

eg:list src/fun1.c:1

看完了這篇文章,相信你對(duì)“GDB如何調(diào)試”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

gdb
AI