gdb調(diào)試
編譯加上-g參數(shù)
gcc test1.c -g -o test1
進(jìn)入調(diào)試
gdb test1
開(kāi)始調(diào)試
start
顯示代碼
list-簡(jiǎn)寫l
list 函數(shù)名稱(查看函數(shù)內(nèi)容)
list 行數(shù)(查看某行代碼)
執(zhí)行下一步
next-簡(jiǎn)寫n
查看變量
print 變量名-簡(jiǎn)寫p
進(jìn)入到某個(gè)函數(shù)
step-簡(jiǎn)寫s
設(shè)置斷點(diǎn)
break 行號(hào)(gdb中的行號(hào))-簡(jiǎn)寫b
全速運(yùn)行
continue-遇到斷點(diǎn)會(huì)停止-簡(jiǎn)寫b
查看斷點(diǎn)信息
info breakpoints
刪除斷點(diǎn)
delete breakpoints 斷點(diǎn)編號(hào)
修改變量的值
set var 變量=值
程序調(diào)用堆棧
當(dāng)前函數(shù)之前的所有已調(diào)用函數(shù)列表锡凝,每一個(gè)都分配一個(gè)“幀”寇蚊,最近調(diào)用的函數(shù)在0號(hào)幀里
backtrace-簡(jiǎn)寫bt
切換棧幀
frame 1(查看指定棧幀的變量)
自動(dòng)顯示
display 變量名
取消自動(dòng)顯示
undisplay 行號(hào)(自動(dòng)顯示的行號(hào))
查看內(nèi)存布局
x /20 地址
x /20 buff-查看buff數(shù)組的前20個(gè)元素
程序非正常退出最域,如何查看錯(cuò)誤略荡?
1.ulimit -a 查看core文件是否分配大小
2.ulimit -c 1024 創(chuàng)建的core文件大小為1024字節(jié)
3.gcc test2.c -g -o test2 編譯鏈接得到帶有-g選項(xiàng)的可執(zhí)行程序
4../test2 執(zhí)行程序消别,會(huì)生成core日志文件
5.gdb test2 core 打開(kāi)日志文件擂红,定位錯(cuò)誤信息到具體的代碼行數(shù)