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的界面。 |
|