C学习笔记-gdb
gdb即GNU debugger,用來調(diào)試程序
gdb使用前提
要使用gdb,則需要在編譯源代碼時(shí)候使用-g參數(shù)
gcc -g –o test test.c啟動(dòng)gdb
gdb 程序名 [corefile]corefile是可選的,但能增強(qiáng)gdb的調(diào)試能力
Linux默認(rèn)是不生成corefile的,所以需要在用戶profile文件中添加ulimit -c unlimited,修改完成之后讓profile文件及時(shí)生效
另外程序錯(cuò)誤時(shí)候會(huì)生成core或者core.*文件,也可作為其參數(shù)
gdb的使用
快速定位軟件出錯(cuò)位置
- 啟動(dòng)gdb調(diào)試錯(cuò)誤
- 關(guān)閉多余軟件信息
如果軟件出錯(cuò),就會(huì)打印出出錯(cuò)的語句
使用gdb調(diào)試
- 啟動(dòng)gdb
- 運(yùn)行程序
- 顯示導(dǎo)致段錯(cuò)誤的執(zhí)行函數(shù)樹
- 顯示包含錯(cuò)誤附近代碼
m,n為可選參數(shù),表示起始行和結(jié)尾行
不帶參數(shù)默認(rèn)顯示附近10行
- 顯示表達(dá)式、變量的值
e.g.
(gdb) print i- 變量的類型
- 結(jié)構(gòu)的定義
gdb的斷點(diǎn)使用
- break命令設(shè)置斷點(diǎn)
- 進(jìn)入gdb調(diào)試模式
以上是進(jìn)入gdb調(diào)試,在代碼第5行設(shè)置斷點(diǎn),運(yùn)行程序
- 查看已設(shè)置斷點(diǎn)
- 從斷點(diǎn)以后繼續(xù)執(zhí)行
- 刪除一個(gè)斷點(diǎn)
- 改變一個(gè)變量的值
- step命令
當(dāng)遇到一個(gè)函數(shù)的時(shí)候,step將進(jìn)入函數(shù),每次執(zhí)行一條語句,相當(dāng)于step into
- next命令
當(dāng)遇到一個(gè)函數(shù)的時(shí)候,next將執(zhí)行整個(gè)函數(shù),相當(dāng)于step over
- return [value]命令
停止執(zhí)行當(dāng)前函數(shù),將value返回給調(diào)用者,相當(dāng)于step return
轉(zhuǎn)載于:https://www.cnblogs.com/cj5785/p/10664754.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 坑题
- 下一篇: 从NetCore报错到MySql安全