gdb調試攻略

簡介

gdb是一個由GNU開源組織發布的、Unix/Linux操作系統下的、基于命令行的、功能強大的程序調試工具。相比于VS里面的圖形化調試工具,其功能更加強大。

安裝

sudo apt-get install gdb

調試步驟

  1. 編譯:gcc -g hello.c -o hello (在編譯選項加入 -g )
  2. 調試:gdb hello
  3. 使用gdb命令進行調試

常用命令

運行:
  • run / r:運行程序,遇到斷點處停止
  • continue / c:繼續執行,到下一個斷點處
  • next / n:單步執行且不進入函數
  • step / s:單步執行且進入函數
  • until:在循環體中運行直到退出循環
  • finish:運行程序直到當前函數完成返回
  • call:調用程序中可見的函數并可傳參 - call func(params)
  • enter(回車鍵):重復上次指令
  • quit / q:退出gdb
斷點
  • break n:在第n行設置斷點
  • clear n:清楚第n行的斷點
  • break func():在程序func()入口處設置斷點
  • delete n:刪除第n個斷點
  • disable n:暫停第n個斷點
  • enable n:開啟第n個斷點
  • info b:顯示當前斷點的設置情況
  • delete breakpoints:清楚所有的斷點
查看源碼
  • list / l:列出源代碼,默認10行 - list
  • list n:以n行為中心列出前后10行
  • list func():顯示該函數的源代碼
打印表達式
  • print / p 表達式:打印表達式的值,表達式可以為變量、字符串、函數調用
  • print &變量:查看變量所在地址(指針)
  • x addr:查看addr地址的內存
  • display 表達式:設置每次單步運行后輸出該表達式的值
  • watch 表達式:監視表達式,當其改變時輸出前后變化
  • whtatis:查詢變量或函數
  • info function:查詢函數
  • info locals:顯示當前堆棧頁的所有變量
  • info registers:顯示當前寄存器的值
查詢運行信息
  • where / bt:當前運行的堆棧列表
  • bt backtrace:顯示當前調用堆棧
  • up / down:改變堆棧顯示的深度
  • set args參數:指定運行時的參數
  • show args參數:查看設置好的參數
  • info program: 查看程序是否在運行,進程號,被暫停的原因
分割窗口
  • layout src:顯示源代碼窗口
  • layout asm:顯示反匯編窗口
  • layout split:顯示源代碼、反匯編窗口
  • layout regs:顯示源代碼、反匯編、CPU寄存器窗口
  • Ctrl + L:刷新窗口
  • Ctrl + x + a:退出layout
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 程序調試的基本思想是“分析現象->假設錯誤原因->產生新的現象去驗證假設”這樣一個循環過程,根據現象如何假設錯誤原...
    Manfred_Zone閱讀 16,579評論 0 26
  • gdb是一個由GNU開源組織發布的、UNIX/LINUX操作系統下的、基于命令行的、功能強大的程序調試工具。 啟動...
    techping閱讀 1,489評論 0 2
  • layout: wikititle: Android逆向分析筆記categories: Reverse_Engin...
    超哥__閱讀 10,734評論 1 17
  • 文/小笠無敵 昨天下午,安安終于睡熟了,這幾天感冒加咳嗽讓她睡不好,動不動就哭。我的火氣也有點大,對安爸總是冷嘲熱...
    荔枝小蜜閱讀 498評論 7 13
  • 想做大?想做強?請放棄熟人市場、用心開擴新渠道! 有些人做市場、搞銷售、擔心自己沒人脈、朋友同學少、怕做不到、做不...
    七老袁滿閱讀 298評論 0 2