linux學習之gdb調試工具篇
阿新 • • 發佈:2017-11-13
poi info 令行 啟用 繼續 ext delete fork mod
gdb
1.gdb介紹
本章介紹一種很強大的調試工具gdb
,可以完全操控程序的運行,使得程序就像你手裏的玩具一樣,叫它走就走,叫它停就停,並且隨時可以查看程序中所有的內部狀態,比如各變量的值、傳給函數的參數、當前執行的代碼行等。
有了gdb以後,即使調試手段豐富了,調試的基本思想仍然是“分析現象->假設錯誤原因->產生新的現象去驗證假設”這樣一個循環,根據現象如何假設錯誤原因,以及如何設計新的現象去驗證假設,這都需要非常嚴密的分析和思考,如果因為手裏有了強大的工具就濫用而忽略了分析過程,往往會治標不治本地修正Bug,導致一個錯誤現象消失了但Bug仍然存在,甚至是把程序越改越錯
2.gdb的常用命令
- help(h)———按模塊列出命令類
- help class——查看某一類型的具體命令
- list(l)———查看代碼,可跟行號和函數名
- quit(q)———退出gdb
- run(r)———-全速運行程序
- start———–單步執行,運行程序,停在第一行執行語句
- next(n)———逐過程執行
- step(s)———逐語句執行,遇到函數,跳到函數內執行
- backtrace(bt)–查看函數的調用的棧幀和層級關系
- info(i)———查看GDB內部局部變量的數值,info breakpoints切換函數的棧幀。
- finish———-結束當前函數,返回到函數調用點
- set————-設置變量的值 set var n = 100
- run argv[1] argv[2]–調試時命令行傳參
- print(p)——–打印變量和地址
- break(b)——–設置斷點,可根據行號和函數名
- delete(d)——-刪除斷點d breakpoints NUM
- display———設置觀察變量
- undisplay——-取消觀察變量
- continue(c)—–繼續全速運行剩下的代碼
- enable breakpoints ——-啟用斷點
- disable breakpoints——-禁用斷點
- x —————–查看內存 x /20xw 顯示20個單元,16進制,4字節每單元
-
watch————被設置觀察點的變量發生修改時,打印顯示
-
i watch———-顯示觀察點
- core文件———ulimit -c 1024 開啟core文件,調試時gdb a.out core
3.gdb調試模式
- run全速運行
- start 單步調試
- set follow—fork -mode child#Makefile項目管理。設置跟蹤模式,跟蹤父進程或子進程。
linux學習之gdb調試工具篇