1. 程式人生 > >linux學習之gdb調試工具篇

linux學習之gdb調試工具篇

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調試工具篇