溫馨提示×

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

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

Linux下如何調(diào)試c語(yǔ)言

發(fā)布時(shí)間:2022-01-26 10:04:44 來(lái)源:億速云 閱讀:209 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“Linux下如何調(diào)試c語(yǔ)言”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Linux下如何調(diào)試c語(yǔ)言”這篇文章吧。

調(diào)試是每個(gè)程序員都會(huì)面臨的問(wèn)題. 如何提高程序員的調(diào)試效率, 更好更快地定位程序中的問(wèn)題從而加快程序開(kāi)發(fā)的進(jìn)度。

調(diào)試指令

指令:

1.編譯:gcc -o xxx xxx.c
2.生成可調(diào)試文件:gcc -o xxx -g xxx.c
3.調(diào)試程序:gdb xxx
4.執(zhí)行程序:
start 從程序第一步開(kāi)始執(zhí)行
run 直接運(yùn)行程序到結(jié)束或者斷點(diǎn)處
5.設(shè)置斷點(diǎn):break line(行數(shù))或函數(shù)名或者條件表達(dá)式
break 6 在第6行設(shè)置斷點(diǎn)
break Swap 在Swap函數(shù)入口設(shè)置斷點(diǎn)
break 6 if i == 10 在第6行設(shè)置斷點(diǎn),要求i == 10
6.刪除斷點(diǎn):
clear 刪除所有斷點(diǎn)
clear 行號(hào) : 刪除這行的斷點(diǎn)
clear 函數(shù)名 : 刪除該函數(shù)的斷點(diǎn)
7.info 查看斷點(diǎn)
8.c 繼續(xù)執(zhí)行到下一個(gè)斷點(diǎn)
9.print +變量 打印變量值
10.n 下一步
11.q 退出調(diào)試

例子:

一、我們以“交換兩個(gè)數(shù)的值”為例進(jìn)行調(diào)試,代碼如下:

 //我們這里使用第三個(gè)值進(jìn)行交換,是為了方便在調(diào)試過(guò)程中查看變量的值
 void Swap(int* number1,int* number2)
 {
     int tmp=(*number1);
     (*number1)=(*number2);
     (*number2)=tmp;
 }
 
 int main()
 {
     int x=2;
     int y=3;
     Swap(&x,&y);
     retrun 0;
 }123456789101112131415

二、按下圖步驟做好調(diào)試前的準(zhǔn)備: 

Linux下如何調(diào)試c語(yǔ)言

三、調(diào)試內(nèi)容(請(qǐng)按照以下序號(hào)順序輸入指令): ①運(yùn)行程序:(gdb) run 

Linux下如何調(diào)試c語(yǔ)言

根據(jù)上圖顯示,程序正常運(yùn)行并退出

②設(shè)置斷點(diǎn):(gdb) break 12(行數(shù)或者函數(shù)名) 

Linux下如何調(diào)試c語(yǔ)言

③開(kāi)始調(diào)試:(gdb) run 

Linux下如何調(diào)試c語(yǔ)言

根據(jù)上圖顯示,程序從斷點(diǎn)處開(kāi)始執(zhí)行,即第12行處。

④打印變量值:(gdb) print x(變量名) 

Linux下如何調(diào)試c語(yǔ)言

根據(jù)上圖顯示,打印第11行的變量x,顯示值為2

⑤繼續(xù)執(zhí)行下一步:(gdb) n 

Linux下如何調(diào)試c語(yǔ)言

⑥跳轉(zhuǎn)到下一個(gè)斷點(diǎn):(gdb) c 

Linux下如何調(diào)試c語(yǔ)言

根據(jù)上圖顯示,在第6行設(shè)置了第二個(gè)斷點(diǎn)(第一個(gè)斷點(diǎn)在第12行),輸入“c”,直接跳轉(zhuǎn)到第6行,即第二個(gè)斷點(diǎn)處。

⑦繼續(xù)執(zhí)行,直到退出函數(shù):(gdb) n 

Linux下如何調(diào)試c語(yǔ)言

⑧打印Swap函數(shù)執(zhí)行后變量的值: (gdb) print x (gdb) print y Linux下如何調(diào)試c語(yǔ)言

⑨退出調(diào)試:(gdb) q 

Linux下如何調(diào)試c語(yǔ)言

以上是“Linux下如何調(diào)試c語(yǔ)言”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(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)容。

AI