http://blog.csdn.net/kong_nuc/archive/2008/08/30/2853025.aspx
dbx是UNIX下基于命令行界面的程序調(diào)試器,假如不能學(xué)會(huì)dbx,無疑將為你在UNIX端的編程上增添許多的困難。
dbx是通過交互執(zhí)行dbx子命令來達(dá)到調(diào)試的目的的。
在調(diào)試程序前,必須先將-g選項(xiàng)包含在編譯信息中,編譯生成帶調(diào)試信息的文件,即:cc -o filename -g file.c。
進(jìn)入dbx通常只需輸入"dbx filename"即可,filename為待調(diào)試的可執(zhí)行程序名。
dbx加載后就顯示提示符:(dbx),此時(shí)用戶就可以輸入dbx子命令進(jìn)行調(diào)試了。
下面是一些dbx的常用子命令:
1.基本操作命令
run arg1 arg2 ... :以arg1,arg2,...為參數(shù)開始運(yùn)行現(xiàn)有進(jìn)程。
r:用上次使用的參數(shù)再次運(yùn)行現(xiàn)有進(jìn)程。
source filename:從文件名為filename的文件中讀入dbx子命令并執(zhí)行。
return:執(zhí)行完目前的進(jìn)程后返回。
sh command:不退出dbx,執(zhí)行一條操作系統(tǒng)shell命令。
sh:暫時(shí)進(jìn)入shell狀態(tài)。
quit:退出dbx,若程序未執(zhí)行完則終止其執(zhí)行。
2.置斷點(diǎn)與跟蹤點(diǎn)命令
stop var at n:置斷點(diǎn)命令,當(dāng)?shù)趎行的變量var發(fā)生變化時(shí)將程序掛起。
stop var in proc:置斷點(diǎn)命令,當(dāng)過程proc的變量var發(fā)生變化時(shí)將程序掛起。
stop at n:置斷點(diǎn)命令,當(dāng)執(zhí)行到第n行時(shí)將程序掛起。
stop in proc:置斷點(diǎn)命令,當(dāng)執(zhí)行到過程proc時(shí)將程序掛起。
trace var at n:置跟蹤點(diǎn)命令,當(dāng)?shù)趎行的變量var改變時(shí)顯示跟蹤信息。
trace var in proc:置跟蹤點(diǎn)命令,當(dāng)過程proc的變量var改變時(shí)顯示跟蹤信息。
trace n:置跟蹤點(diǎn)命令,當(dāng)執(zhí)行到第n行時(shí)顯示被跟蹤信息。
trace proc:置跟蹤點(diǎn)命令,當(dāng)執(zhí)行到過程proc時(shí)顯示被跟蹤信息。
trace eXPr at n:置跟蹤點(diǎn)命令,當(dāng)執(zhí)行到第n行時(shí)顯示var的值。
delete nall:刪除第n行的/所有的斷點(diǎn)與跟蹤點(diǎn)。
3.調(diào)試命令
cont at n:運(yùn)行直至第n行。
print var:打印變量var的值。
printf "string",expr,...:以C語言的格式打印。
where:打印當(dāng)前調(diào)試狀態(tài),包括當(dāng)前進(jìn)程的信息。
func:查看當(dāng)前運(yùn)行的進(jìn)程名。
func proc:移至到調(diào)用proc進(jìn)程的母進(jìn)程處。
whatis name:顯示對(duì)變量名或過程名name的類型。
step [n]:?jiǎn)尾綀?zhí)行一行或n行,碰到線程調(diào)用時(shí)進(jìn)入線程調(diào)用。
next [n]:?jiǎn)尾綀?zhí)行一行或n行,碰到線程調(diào)用時(shí)拒絕進(jìn)入線程調(diào)用。
skip [n]:跳過一個(gè)或n個(gè)斷點(diǎn),繼續(xù)往下執(zhí)行
dump [proc] [>file]:顯示當(dāng)前或proc過程的所有變量名及其值
assign var=expr:給變量var賦以表達(dá)式expr的值
4.讀取被調(diào)試程序命令
list:列出從當(dāng)前行開始的若干行源程序。
list n,m:列出從第n行到第m行的源程序。
/string:朝文件尾方向查找字符串string
?string:朝文件頭方向查找字符串string
file filename:將查看的文件切換到文件filename處