程序的發(fā)布方式有兩種,debug模式和release模式
Linux gcc/g++出來的二進(jìn)制程序,默認(rèn)是release模式
要使用gdb調(diào)試,必須在源代碼生成二進(jìn)制程序的時(shí)候, 加上 -g 選項(xiàng)
?
所以一份代碼若要被調(diào)試必須是debug模式,但是在linux下我們編譯代碼的時(shí)候默認(rèn)為release模式,要想讓我們的代碼以debug模式發(fā)布必須給gcc添加-g選項(xiàng)
在debug模式發(fā)布的時(shí)候一定要給可執(zhí)行程序內(nèi)部添加debug信息,否則無法調(diào)試,故而debug模式下形成的可執(zhí)行程序大小>release形成的可執(zhí)行程序
開始使用gdb
看代碼:I 數(shù)字 從第數(shù)字行開始展示,gdb會記錄最近的歷史命令,直接回車就是上一個(gè)命令
打斷點(diǎn):b 數(shù)字? /文件名:數(shù)字? /文件名:函數(shù) /? ?函數(shù)? 每一個(gè)斷點(diǎn)都有編號
刪斷點(diǎn):d 斷點(diǎn)的編號
查看斷點(diǎn):info b
r:開始調(diào)試
until:運(yùn)行至指定位置
finish:運(yùn)行到當(dāng)前函數(shù)的結(jié)尾
c:從一個(gè)斷點(diǎn)直接運(yùn)行到下一個(gè)斷點(diǎn)處
bt:查看調(diào)用堆棧
enable:開啟斷點(diǎn)
disable:禁止斷點(diǎn)
n:逐過程
s:逐語句
display:變量名和變量地址可以看到變量細(xì)節(jié)
undispaly:根據(jù)長顯示條目編號,取消長顯示
set val:更改變量的值文章來源:http://www.zghlxwxcb.cn/news/detail-728773.html
list/l 行號:顯示binFile源代碼,接著上次的位置往下列,每次列10行。
list/l 函數(shù)名:列出某個(gè)函數(shù)的源代碼。
r或run:運(yùn)行程序。
n 或 next:單條執(zhí)行。
s或step:進(jìn)入函數(shù)調(diào)用
break(b) 行號:在某一行設(shè)置斷點(diǎn)
break 函數(shù)名:在某個(gè)函數(shù)開頭設(shè)置斷點(diǎn)
info break :查看斷點(diǎn)信息。
finish:執(zhí)行到當(dāng)前函數(shù)返回,然后挺下來等待命令
print(p):打印表達(dá)式的值,通過表達(dá)式可以修改變量的值或者調(diào)用函數(shù)
p 變量:打印變量值。
set var:修改變量的值
continue(或c):從當(dāng)前位置開始連續(xù)而非單步執(zhí)行程序
run(或r):從開始連續(xù)而非單步執(zhí)行程序
delete breakpoints:刪除所有斷點(diǎn)
delete breakpoints n:刪除序號為n的斷點(diǎn)
disable breakpoints:禁用斷點(diǎn)
enable breakpoints:啟用斷點(diǎn)
info(或i) breakpoints:參看當(dāng)前設(shè)置了哪些斷點(diǎn)
display 變量名:跟蹤查看一個(gè)變量,每次停下來都顯示它的值
undisplay:取消對先前設(shè)置的那些變量的跟蹤
until X行號:跳至X行
breaktrace(或bt):查看各級函數(shù)調(diào)用及參數(shù)
info(i) locals:查看當(dāng)前棧幀局部變量的值
quit:退出gdb
?文章來源地址http://www.zghlxwxcb.cn/news/detail-728773.html
到了這里,關(guān)于Linux開發(fā)工具之調(diào)試器gdb的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!