日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

gcc和gdb

 microee 2015-03-15
Linux doc   by: zollty

gcc編譯命令如下:

gcc test1.c……默認(rèn)編譯產(chǎn)生的可執(zhí)行文件為a.out

gcc test1.c -o test1.out…參數(shù)-o test1.out用于將生產(chǎn)的可執(zhí)行文件命名為test1.out

 

實(shí)際上編譯分3個階段,預(yù)處理、編譯、匯編,每個階段生成不同的文件,分步編譯如下:

gcc -E test.c -o test.i,在預(yù)處理之后停下來,輸出中間文件*.i

gcc -S test.i -o test.s,在編譯之后停下來,輸出匯編語言文件*.s

gcc -c test.s -o test.o,在匯編之后停下來,輸出二進(jìn)制機(jī)器代碼文件*.o

gcc test.o -o test,最后鏈接階段,將*.o文件和其他機(jī)器代碼文件、庫文件匯集成一個可執(zhí)行的二進(jìn)制代碼文件。

這幾個過程可以簡化成

gcc test.c -o test

還有兩種常見寫法:

gcc -g test.c -o test

gcc test.c -g -o test

這兩種寫法是為準(zhǔn)備gdb調(diào)試用的,所以加上了-g,沒有這個參數(shù)編譯后的test無法用于gdb調(diào)試。

 

gdb調(diào)試C程序

先要用gcc編譯,見上面寫的兩條命令。然后就可以用gdb來調(diào)試了。

gdb常用命令如下:

gdb -q test或者gdb -q然后file test

quit

kill

run

continue

step

next

stepi

nexti

list

search向前查找,等同于forward

reverse-search向后查找

shell例如shell ls

break例如break 7或break fun1或break 7 if i==99

watch例如watch i==99,當(dāng)i==99值發(fā)生變化時會停下來

info breakpoints

clear例如clear 7(行號)或clear fun1或clear(清楚全部斷點(diǎn))

delete例如delete 2(斷點(diǎn)編號)

enable

disable例如disable 2(斷點(diǎn)編號)

print例如p sum或p i<n或p i=200(賦值)

set賦值,例如set variable i=200

    用p(print)命令顯示變量或表達(dá)式的值,每次執(zhí)行n后都要執(zhí)行p非常麻煩,可以用display [expr]設(shè)置自動顯示。例如:

display a[i]……………………設(shè)置a[i]為自動顯示

disable display………………禁用自動顯示

enable display………………恢復(fù)自動顯示

delete display………………刪除

    next,step等都是單步執(zhí)行,設(shè)置連續(xù)執(zhí)行的步數(shù):cont,例如:

cont 13……………程序連續(xù)執(zhí)行13步

注:linux下調(diào)試程序用圖形化界面的kdbg或者ddd比DBG更加方便,下圖是kdbg的界面。

 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多