gdb偵錯程式簡介

2021-09-27 12:20:13 字數 1679 閱讀 1967

偵錯程式:gdb(大而不全)

三特點:①啟動被除錯的程式

②設定斷點,單步執行

③檢視變數的值

gcc -g(生成除錯資訊)

gdb sum(生成可執行檔案)

quit(退掉)

1、檢視源**:gdb+可執行檔案±-tui

layout asm 彙編+原始碼

layout split 彙編

layout src 原始碼

layout reg 暫存器

2、斷點相關命令:break+行號(打斷點)

break+行號+條件(打斷點)

info break(檢視斷點資訊)

delete+斷點編號(刪除斷點)

break+函式名(當呼叫函式停下 break func)

enable+斷點編號(開啟斷點)

disable+斷點編號(失去斷點功能)

clear+行號(清除斷點)

3、執行命令:run(執行命令)

next(單步執行不會進入子函式)

step(進入子函式)

continue(繼續執行直到程式結束,再次遇斷點會停)

補充:編譯程式時需要加上-g,之後才能用gdb進行除錯:gcc -g main.c -o main

gdb中命令:

(gdb)help:檢視命令幫助,具體命令查詢在gdb中輸入help + 命令,簡寫h

(gdb)start:單步執行,執行程式,停在第一執行語句

(gdb)list:檢視原**(list-n,從第n行開始檢視**。list+ 函式名:檢視具體函式),簡寫l

(gdb)set:設定變數的值

(gdb)next:單步除錯(逐過程,函式直接執行),簡寫n

(gdb)step:單步除錯(逐語句:跳入自定義函式內部執行),簡寫s

(gdb)backtrace:檢視函式的呼叫的棧幀和層級關係,簡寫bt

(gdb)frame:切換函式的棧幀,簡寫f

(gdb)info:檢視函式內部區域性變數的數值,簡寫i

(gdb)finish:結束當前函式,返回到函式呼叫點

(gdb)continue:繼續執行,簡寫c

(gdb)quit:退出gdb,簡寫q

(gdb)break+num:在第num行設定斷點,簡寫b

(gdb)info breakpoints:檢視當前設定的所有斷點

(gdb)delete breakpoints num:刪除第num個斷點,簡寫d

(gdb)display:追蹤檢視具體變數值

(gdb)undisplay:取消追蹤觀察變數

(gdb)watch:被設定觀察點的變數發生修改時,列印顯示

(gdb)i watch:顯示觀察點

(gdb)enable breakpoints:啟用斷點

(gdb)disable breakpoints:禁用斷點

(gdb)x:檢視記憶體x/20xw 顯示20個單元,16進製制,4位元組每單元

(gdb)run ar**[1] ar**[2]:除錯時命令列傳參

(gdb)set follow-fork-mode child#makefile專案管理:選擇跟蹤父子程序(fork())

core檔案:先用$ ulimit -c 1024 開啟core,當程式出錯會自動生成core檔案。除錯時 gdb a.out core

ctrl+c:退出輸入

GDB偵錯程式簡介

linux系統中包含了gnu 除錯程式gdb,它是乙個用來除錯c和 c 程式的偵錯程式。可以使程式開發者在程式執行時觀察程式的內部結構和記憶體的使用情況。1 監視程式中變數的值 2 設定斷點以使程式在制定的 上上執行 3 一行一行的執行 gdb程式除錯的物件是可執行檔案,需在執行gcc指令編譯程式時...

GDB偵錯程式簡介

linux系統中包含了gnu 除錯程式gdb,它是乙個用來除錯c和 c 程式的偵錯程式。可以使程式開發者在程式執行時觀察程式的內部結構和記憶體的使用情況。1 監視程式中變數的值 2 設定斷點以使程式在制定的 上上執行 3 一行一行的執行 gdb程式除錯的物件是可執行檔案,需在執行gcc指令編譯程式時...

GDB偵錯程式簡介

linux系統中包含了gnu 除錯程式gdb,它是乙個用來除錯c和 c 程式的偵錯程式。可以使程式開發者在程式執行時觀察程式的內部結構和記憶體的使用情況。1 監視程式中變數的值 2 設定斷點以使程式在制定的 上上執行 3 一行一行的執行 gdb程式除錯的物件是可執行檔案,需在執行gcc指令編譯程式時...