gdb平常使用

gdb 是一個由 GNU 開源組織發佈的、UNIX/LINUX 操做系統下的、基於命令行的、功能強大的程序調試工具。固然了,通常都是使用 gdb 調試 c/cpp 程序。shell

通常來講,GDB主要幫忙你完成下面四個方面的功能:函數

  1. 啓動你的程序,能夠按照你的自定義的要求爲所欲爲的運行程序。
  2. 可以讓被調試的程序在你所指定的調置的斷點處停住。(斷點能夠是條件表達式)
  3. 當程序被停住時,能夠檢查此時你的程序中所發生的事。
  4. 動態的改變你程序的執行環境。

gdb 功能很強大,所以命令也不少,可是並不見得都能用獲得,對於平常使用來講,知道一些經常使用的就夠用了。工具

準備工做

代碼在編譯時要加上 -g 選項,生成的可執行文件才能用 gdb 進行源碼級調試。
好比,gcc -g main.c -o main
-g 選項的做用是在可執行文件中加入源代碼的信息,好比可執行文件中第幾條機器指令對應源代碼的第幾行,但並非把整個源文件嵌入到可執行文件中,因此在調試時必須保證gdb能找到源文件。ui

參數說明

list/l

list linenum,打印出以 linenum 行爲中心的上下幾行源碼。
list func,打印以函數 func 定義所在行爲中心的上下幾行代碼。
list, 打印當前行後面的源程序,每次10行。操作系統

run/r

運行程序至第一個斷點處中止。.net

break/b

break linenum,在第 linenum 處設置一個斷點。
break func,在 func 函數入口處設置一個斷點。命令行

d

d 斷點num,刪除第 num 個斷點。調試

step/s

執行一行源程序代碼,若是此行代碼中有函數調用,則進入該函數。code

next/n

與 step 相反,n 表示不進入函數內容,繼續執行。blog

print/p

print 變量名,打印出變量值。

backtrace/bt

查看各級函數調用及參數。

frame/f

frame 幀編號,選擇棧幀。

set

set var 變量=值,修改某變量的值。
或者用 print 指令也能達到目的。

finish

讓程序一直運行到從當前函數返回爲止。

info/i

info break,查看全部已經設置的斷點信息。
info locals,查看當前棧幀局部變量的值。

shell

不離開 gdb 就執行 UNIX shell 命令

help/h

獲取幫助信息。

quit/q

離開 gdb。

注意: 上述命令幾乎均可以使用首字母來簡寫長命令。

調試 coredump 文件

gdb 可執行文件 產生的coredump文件,好比,gdb test core.3533

參考

  1. Linux gdb調試器用法全面解析
  2. 使用gdb調試程序徹底教程
相關文章
相關標籤/搜索