linux學習之gdb調試工具篇

來源:互聯網
上載者:User

標籤:out   設計   var   驗證   disable   原因   trace   取消   令行   

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.