天天看點

#yyds幹貨盤點#Linux下的GDB調試器以及常用指令

1. 概述

  • GDB(GNU Debugger) 是一個用來調試 C/C++ 程式的功能的調試器,是Linux系統開發C/C++最常用的調試器
  • 程式員可以使用GDB來跟蹤程式中的錯誤,進而減少程式員的工作量
  • Linux開發C/C++一定要熟悉GDB
  • VScode是通過調用GDB調試器來實作工作的
  • 設定斷點(斷點可以是條件表達式)
  • 使程式在指定的代碼上暫停執行,便于觀察
  • 單步執行程式,便于調試
  • 檢視程式中變量值的變化
  • 動态改變程式的執行環境
  • 分析崩潰程式産生的core檔案

2. 常用調試指令參數

help(h) #檢視指令幫助,具體指令查詢在gdb 中輸入help + 指令
run(r) #重新開始運作檔案(run-text:加載文本檔案,run-bin:加載二進制檔案)
start(s) #單步執行,運作程式,停在第一行執行語句
list(l) #檢視源代碼(list-n從第n行開始檢視代碼。list+函數名:檢視具體函數)
set #設定變量的值
next(n) #單步調試(逐過程,函數直接執行)
step(s) #單步調試(逐語句,跳入自定義函數内部執行)
backtrace(bt) #檢視函數的調用棧幀和層級關系
frame(f) #切換函數的棧幀
info(i) #檢視函數内部局部變量的數值
finish #結束目前函數,傳回到函數調用點
continue(c) #繼續執行
print(p) #列印值及位址
quit(q) #退出gdb
break + num(b) #在某行達斷點
info + breakpoints #檢視目前設定的所有斷點
delete + breakpoints num(d) #删除第num個斷點
display #跟蹤檢視具體的變量值
undisplay #取消跟蹤觀察變量
watch #被設定觀察點的變量發生修改時,列印顯示
i watch #顯示觀察點
enable breakpoints #啟用斷點
disable breakpoints #禁用斷點
x #檢視記憶體x/20xw 顯示20個單元,16進制,4個位元組沒單元
run argv[1] argv[2] #調試指令傳參
set follow-fork-mode child #Makefile項目管理,選擇跟蹤父子程序(fork)
           
  1. 編譯源代碼時需要加上

    -g

    ,産生的可執行檔案才能用

    gdb

    進行調試,例如:

    gcc -g main.cpp -o main

  2. Enter鍵:重複上一條指令

繼續閱讀