日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Linux匯編級(jí)調(diào)試工具:熟悉一下GDB(linux匯編級(jí)調(diào)試工具)

GDB是一款優(yōu)秀的調(diào)試工具,它在Linux系統(tǒng)中被廣泛使用。無(wú)論開(kāi)發(fā)一個(gè)大型項(xiàng)目還是編寫(xiě)幾百行代碼,GDB都是一個(gè)必不可少的工具。在Linux系統(tǒng)下,它的作用不僅僅限于匯編調(diào)試,還可以用來(lái)調(diào)試C、C++、FORTRAN等其他語(yǔ)言的程序。

成都創(chuàng)新互聯(lián)技術(shù)團(tuán)隊(duì)十載來(lái)致力于為客戶(hù)提供成都網(wǎng)站制作、成都做網(wǎng)站、高端網(wǎng)站設(shè)計(jì)、成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)、搜索引擎SEO優(yōu)化等服務(wù)。經(jīng)過(guò)多年發(fā)展,公司擁有經(jīng)驗(yàn)豐富的技術(shù)團(tuán)隊(duì),先后服務(wù)、推廣了上千多家網(wǎng)站,包括各類(lèi)中小企業(yè)、企事單位、高校等機(jī)構(gòu)單位。

GDB是GNU調(diào)試器的縮寫(xiě),是一個(gè)免費(fèi)的、開(kāi)放源代碼的工具,它支持所有的CPU架構(gòu),包括x86、x86-64、ARM和MIPS等。在Linux系統(tǒng)下,GDB可以以命令行界面或者可視化界面的形式使用。

使用GDB可以在匯編級(jí)別進(jìn)行調(diào)試。它可以讓我們查看內(nèi)存中的內(nèi)容,檢查CPU寄存器的狀態(tài),以及分析程序的執(zhí)行路徑。使用GDB還可以跟蹤程序的執(zhí)行過(guò)程,查看指針值、變量值和函數(shù)調(diào)用棧等信息。同時(shí),GDB還提供了一些高級(jí)功能,比如條件斷點(diǎn)、動(dòng)態(tài)指定調(diào)試對(duì)象、多線(xiàn)程支持、崩潰檢測(cè)和調(diào)試優(yōu)化等。

在Linux系統(tǒng)中,如果需要使用GDB進(jìn)行匯編級(jí)調(diào)試,我們需要安裝GDB,并在命令行終端下執(zhí)行以下命令:

“`bash

gdb program_name

“`

這個(gè)命令會(huì)啟動(dòng)GDB,并打開(kāi)指定的可執(zhí)行文件。在GDB的命令行中,我們可以使用以下的命令進(jìn)行調(diào)試:

“`bash

b mn #在mn函數(shù)的開(kāi)頭設(shè)置斷點(diǎn)

r #運(yùn)行程序

si #執(zhí)行一條匯編指令

display/i $pc #將當(dāng)前指令的匯編表示打印出來(lái)

x/4x $rsp #查看棧上的4個(gè)字節(jié)

info registers #查看所有的寄存器值

info frame #查看當(dāng)前棧幀信息

c #繼續(xù)執(zhí)行直到下一個(gè)斷點(diǎn)

q #退出GDB

“`

使用GDB進(jìn)行匯編級(jí)調(diào)試需要一定的技能和經(jīng)驗(yàn),但是掌握GDB的基本使用方法可以讓我們更輕松地分析代碼和調(diào)試程序。熟練掌握GDB需要不斷練習(xí)和積累經(jīng)驗(yàn),建議在小程序中多練習(xí),逐漸提高GDB的調(diào)試技能。

GDB是Linux系統(tǒng)中更流行的調(diào)試工具之一,它提供了豐富的調(diào)試功能和功能強(qiáng)大的命令行界面,可以幫助我們解決各種問(wèn)題。熟練掌握GDB可以讓我們更好地了解代碼執(zhí)行的狀態(tài),追蹤進(jìn)程的運(yùn)行路徑,幫助我們優(yōu)化代碼和提高程序的可靠性。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專(zhuān)注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線(xiàn):028-86922220

在linux里,c程序的編輯、編譯、調(diào)試的詳細(xì)步驟是什么?

程序編寫(xiě)

命令行下的有vi,emacs

有界面的kwrite等等

編譯用gcc

調(diào)試用gdb

一個(gè)編譯調(diào)試示例

——————

源程序:tst.c

#include

2

int func(int n)

{

int sum=0,i;

for(i=0; i gcc -g tst.c -o tst

使用GDB調(diào)試:

hchen/test> gdb tst

int func(int n)

{

int sum=0,i;

for(i=0; i

{

sum+=i;

}

return sum;

(gdb)

}

main()

{

int i;

long result = 0;

for(i=1; i

{

result += i;

(gdb) break

Breakpoint 1 at 0x: file tst.c, line 16.

(gdb) break func

Breakpoint 2 at 0x: file tst.c, line 5.

(gdb) info break

Num TypeDisp Enb Address What

1 breakpoint keep y 0xin main at tst.c:16

2 breakpoint keep y 0xin func at tst.c:5

(gdb) r

Starting program: /home/hchen/test/tst

Breakpoint 1, main () at tst.c:17

long result = 0;

(gdb) n

for(i=1; i

(gdb) n

result += i;

(gdb) n

for(i=1; i

(gdb) n

result += i;

(gdb) c

Continuing.

result =

Breakpoint 2, func (n=250) at tst.c:5

int sum=0,i;

(gdb) n

for(i=1; i

(gdb) p i

$1 =

(gdb) n

sum+=i;

(gdb) n

for(i=1; i

(gdb) p sum

$2 = 1

(gdb) n

sum+=i;

(gdb) p i

$3 = 2

(gdb) n

for(i=1; i

(gdb) p sum

$4 = 3

(gdb) bt

#0 func (n=250) at tst.c:5

#1 0x080484e4 in main () at tst.c:24

#2 0x400409ed in __libc_start_main () from /lib/libc.so.6

(gdb) finish

Run till exit from #0 func (n=250) at tst.c:5

0x080484e4 in main () at tst.c:24

printf(“result = %d \n”, func(250) );

Value returned is $6 = 31375

(gdb) c

Continuing.

result =

Program exited with code 027.

(gdb) q

    在linux下,櫻舉一般的c程序開(kāi)發(fā)流程為:

c程序的編輯:

一般情況下,簡(jiǎn)單的c程序編輯是通過(guò)vi文本編輯器進(jìn)行的,語(yǔ)法格式和在windows下的編輯是一樣的;

c程序的編譯:

而編譯則是對(duì)編輯好的c語(yǔ)言程序進(jìn)行一個(gè),預(yù)處理,脊穗碧編輯,匯編和鏈接的過(guò)程,一般格式為:     編譯器名 -參數(shù) 目標(biāo)文件名族鋒 源文件名;

一般工作在命令行模式;

c程序的調(diào)試:

調(diào)試階段則是建立在c程序編譯通過(guò)的情況下進(jìn)行的,一般通過(guò)GDB調(diào)試進(jìn)行,逐步排錯(cuò)和細(xì)節(jié)查看。

(1)用工具寫(xiě)好C程序…比如vi

(2)打開(kāi)終端咐念清,進(jìn)入你存放C語(yǔ)言代高鍵碼的路徑 例如: cd /opt/

(3)gcc a.c -o abc意思衡前是:把你的a.c編譯成abc可執(zhí)行文件

(4)在當(dāng)前目錄終端下 運(yùn)行生成的abc,例如: ./abc 前面的.不要掉了

linux應(yīng)用怎么調(diào)試的

在 Linux 系統(tǒng)下面,不同的語(yǔ)言有不同的調(diào)試方法。如果是對(duì)用戶(hù)自己編寫(xiě)的 C 語(yǔ)言源程序(*.c)進(jìn)行調(diào)試,一般使用 gcc 編譯器對(duì) *.c 為后綴的源文件進(jìn)行高級(jí)調(diào)試。例如:語(yǔ)法錯(cuò)誤、數(shù)組越界錯(cuò)誤、內(nèi)存溢出錯(cuò)誤等,但是這類(lèi)錯(cuò)誤,用戶(hù)無(wú)法進(jìn)行底層調(diào)試,只能夠根據(jù)出錯(cuò)的原因,對(duì)源程序進(jìn)行修改,然后再使用 gcc 編譯器對(duì)源程序進(jìn)行重新編譯、運(yùn)行;棚運(yùn)友如果是對(duì)機(jī)器級(jí)的可執(zhí)行代碼悄旁進(jìn)行底層調(diào)試,那還需要專(zhuān)門(mén)的對(duì)底層鏈槐進(jìn)行調(diào)試的工具軟件才行。

Linux串口調(diào)試工具–minicom

安裝完成后,請(qǐng)氏神不要著急打開(kāi)軟件。需先進(jìn)行配置。具體步驟如下:

查看串口設(shè)備及文件權(quán)限

linux下的所有操作面向用戶(hù)的都是文件操作,在對(duì)串口操作之前,我們應(yīng)該先確認(rèn)自己對(duì)該文件有沒(méi)有讀寫(xiě)權(quán)限。

linux下的u串口命名為ttyUSB*,運(yùn)行上面命令,可以看到有幾個(gè)設(shè)備掛載。

我們這里是:

只有ttuUSB0.再用lsu查看:

u 004正是我們掛上去的u轉(zhuǎn)串口線(xiàn)纜,使用的芯片是PL2303。

但是正如上面顯示,ttyUSB0這個(gè)設(shè)備是root所有的,所以,我們以普通用戶(hù)身份打開(kāi)minicom是沒(méi)法訪(fǎng)問(wèn)該文件的。

運(yùn)行sudo minicom -s便進(jìn)入了minicom的配置界面,使用上下鍵選擇Serial port setup,回車(chē)。此時(shí)光標(biāo)在“change which setting”后面停留,它的上面有如下菜單:

我們只需輸入上面對(duì)穗核哪應(yīng)的字母,就可以進(jìn)如相應(yīng)的菜單進(jìn)行設(shè)置。設(shè)置完成,回車(chē),光標(biāo)會(huì)回到“change which setting”后面,如此重復(fù)。完成按回車(chē)返回主菜單即可。

返回主菜單后,選擇“Save setup as df1”,將其保存為默認(rèn)設(shè)置,然后選擇 Exit退出。需退出后重新打開(kāi)minicom,軟件才會(huì)使用上述參數(shù)進(jìn)行初始化。

注意:如果沒(méi)有使用USB轉(zhuǎn)串口,而是直接使用串口,那么Serial Device要配置為/dev/ttyS0。

如果上面設(shè)置順利,打開(kāi)minicom

重新給設(shè)備上電后,此時(shí),窗口里就有信息打印出來(lái)了。

1)需使用Ctrl+a 進(jìn)入設(shè)置狀態(tài)

2)按z進(jìn)入設(shè)置菜單

(1)O鍵:打開(kāi)配置選項(xiàng);

(2)W鍵:自動(dòng)卷屏。當(dāng)顯示的內(nèi)容超過(guò)一行之後,自動(dòng)將後面的內(nèi)容換行。這個(gè)功能在查看內(nèi)核的啟動(dòng)信息時(shí)很有用。

(3)C鍵:清除屏幕的顯示內(nèi)容;

(4)B鍵:瀏覽minicom的歷史顯示;

(5)X鍵:退出minicom,會(huì)提示確認(rèn)退出。

Ctrl + A –> O

選擇”Filenames and paths”

更多的參數(shù),參見(jiàn)”man minicom”的輸出。

如果不加這個(gè)項(xiàng),那么在minicom和pc交互的時(shí)候中鍵入命令超過(guò)一行時(shí)候會(huì)被截?cái)啵ㄟ@時(shí)候可以通過(guò) w 來(lái)開(kāi)和關(guān)切換截?cái)嘈泄δ埽?

這樣,啟動(dòng)之后我們會(huì)發(fā)現(xiàn)顯示的內(nèi)容不是黑白的了。

這樣,啟動(dòng)之后,所在minicom的輸出都會(huì)在中保留一份,如果原來(lái)文件存在,則追加,不存在猜碼則創(chuàng)建一個(gè)。

這樣,我們可以取代用 * 發(fā)送命令的方式,將 替換成 或者 .

這里,是你的腳本文件的名字,應(yīng)該指定絕對(duì)路徑,否則就會(huì)在你啟動(dòng)minicom的路徑下尋找。

Minicom是基于窗口的。要彈出所需功能的窗口,可按下 Ctrl-A (以下使用C-A來(lái)表示Ctrl-A),然后再按各功能鍵(a-z或A-Z)。先按C-A,再按’z’,將出現(xiàn)一個(gè)幫助窗口,提供了所有命令的簡(jiǎn)述。配置 minicom(-s 選項(xiàng),或者C-A、O)時(shí),可以改變這個(gè)轉(zhuǎn)義鍵,不過(guò)現(xiàn)在我們還是用Ctrl-A吧。

這里,只給出很少的命令,更多的交互命令參見(jiàn)” z”的幫助輸出。

minicom -s 或啟動(dòng)minicom之后運(yùn)行 o 來(lái)進(jìn)行配置。

C:腳本文件的存放位置: g 運(yùn)行腳本時(shí)的路徑 。

D:選擇腳本程序: 默認(rèn) runscript ,也可以選擇 bash 腳本格式。

可以參考man手冊(cè) man runscript .交互命令中可以運(yùn)行” G “來(lái)運(yùn)行腳本。

參考資料

關(guān)于linux 匯編級(jí)調(diào)試工具的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過(guò)多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專(zhuān)業(yè)從事IT產(chǎn)品開(kāi)發(fā)和營(yíng)銷(xiāo)公司。廣泛應(yīng)用于計(jì)算機(jī)網(wǎng)絡(luò)、設(shè)計(jì)、SEO優(yōu)化、關(guān)鍵詞排名等多種行業(yè)!


網(wǎng)頁(yè)名稱(chēng):Linux匯編級(jí)調(diào)試工具:熟悉一下GDB(linux匯編級(jí)調(diào)試工具)
路徑分享:http://m.5511xx.com/article/dpcihjh.html