Linux除錯技術GDB命令

2021-06-29 01:29:59 字數 1666 閱讀 9770

一、常規除錯

gdb是linux下常用的程式除錯工具,當然前提是用gcc/g++編譯時加上-g引數,這樣編譯出的可執行程式會加上gdb除錯資訊。

gdb命令不少,但常用的主要包括如下命令:

(1)list [file:]functuon

命令縮寫是l,檢視原始碼,不加引數時,向下顯示原始碼,加引數-l時,向上顯示原始碼,預設顯示10行。

也可以設定在某個函式出列出原始碼,需要注意的是:如果是非成員函式則用file:function即可,如果是類成員函式則用class::functuon。

(2)edit [file:]function

命令縮寫是e,編輯當前所在的行,也可以編輯某個函式的原始碼(規則同list)。

(3)break [file:]function

命令縮寫是b,設定斷點,可以設定在某行或某個函式處(規則同list),此外還可以直接用檔名:行號來設定斷點。

(4)info

命令縮寫是i,列表gdb子命令的資訊,如:info break, info variables, info stack等。

(5)run [arglist]

命令縮寫是r,執行程式至斷點處停住,run命令之後可以加上除錯程式需要的引數。

(6)next

命令縮寫是n,單步調試執行語句,如果遇到函式也當一條單步語句而不進入函式,類似於vc中的f10。

(7)step

命令縮寫是s,單步調試執行語句,如果遇到函式會直接進入函式內部,類似於vc中的f11。

(8)continue

名利縮寫是c,繼續執行程式至下乙個斷點。

(9)what

檢視變數型別。

(10)print

命令縮寫是p,列印變數的值。

(11)backtrace

命令縮寫是bt,檢視堆疊資訊。

(12)enter

回車鍵,重複執行上一條除錯命令。

(13)help [name]

顯示指定的gdb命令的幫助資訊。

(14)quit

命令縮寫是q,退出gdb。

gdb除錯執行程式時,用gdb .exe引導程式,gdb除錯core dump時,用gdb .exe .core引導程式,執行r命令可以開始執行程式。在gdb內編輯完**後,不需要退出gdb,而直接在gdb裡make即可,否則之前設定的斷點等資訊都付之一炬了。

二、多執行緒除錯

(1)info threads

命令縮寫是info thr, 顯示當前可除錯的所有執行緒,每個執行緒會有乙個gdb為其分配的id,後面操作執行緒的時候會用這個id,前面有*的是當前除錯的執行緒。

(2)thread id

命令縮寫是thr,切換當前除錯的執行緒為指定id的執行緒。

命令縮寫規則同上,讓乙個或者多個執行緒執行gdb命令command。

命令縮寫規則同上,讓所有被除錯執行緒執行gdb命令command。

(5)set scheduler-locking off|on|step

在除錯多執行緒程式時,使用step或者continue命令除錯當前執行緒時,其它執行緒也在併發執行,這個命令可以通過off|on|step來控制線程的執行,即:

off:不鎖定任何執行緒,即所有執行緒都執行,這是預設值。

on:只有當前被除錯程式會被執行。

step:在單步的時候,除了next過乙個函式的情況以外,只有當前執行緒會執行。

Linux的GDB除錯技術

hchen test 補充gdb除錯中動態顯示執行的 在gdb除錯中,大家都知道使用list命令來顯示 例如 顯示main.c中的main函式附近的 list main.c main 顯示main函式附近的 list main 顯示main.c中的第2到20行的 list main.c 2,20 顯...

Linux技術 gdb除錯基礎

gdb即gnu debugger。gcc編譯選項 g,這樣生成的目標 中就新增了除錯資訊。gcc g o hello hello.c gdb完成的大部分工作都可以用很少的命令集合完成。啟動gdb gdb 程式名 corefile corefile是可選的,但能增強gdb的除錯能力。linux預設是不...

GDB除錯技術

gnu的偵錯程式稱為gdb,該程式是乙個互動式工具,工作在字元模式。在 x window 系統中,有乙個gdb的前端圖形工具,稱為xxgdb。gdb 是功能強大的除錯程式,可完成如下的除錯任務 設定斷點 監視程式變數的值 程式的單步執行 修改變數的值。在可以使用 gdb 除錯程式之前,必須使用 g ...