Linux gdb偵錯程式

2021-09-08 01:26:18 字數 2023 閱讀 9467

gdb的啟動

--gdb 程式名 [corefile]

--corefile是可選的,但能增強gdb的除錯能力

--強調:啟動gdb必須在編譯命裡加上"-g"引數,"-g"一般寫在遍歷命令的靠前位置,例如--gcc -wall -g -o hello.o -c hello.c

"-q"命令

--命令格式:gdb -q 執行程式

--不顯示gdb版本資訊

gdb命令集合

--直接執行除錯命令 gdb 程式名

--"run

"開始除錯程式

--"where

"顯示導致段錯誤的執行函式樹

--"list[m,n]

"m,n是要顯示包含錯誤首次出現位置的起始行和結尾行。不帶引數的list命令將顯示附近的10行**

--"print

"print 變數,表示式

print

'filename

'::變數或表示式 --''

是必須的,以便讓gdb知道指的是乙個檔名。

print funcname::變數或表示式

--"whatis

"告訴你變數的型別

--"ptype

"告訴你結構的定義

--"break

"設定斷點

break

linenum(行號)

break

funcname(函式名)

break

filename:linenum

break

filename:funcname

--"continue

"從斷點以後繼續執行,並非單步

--"delete

"刪除乙個端點

語法格式:delete 斷點編號

斷點編號是由

"info break

"獲取的

--"info break

"檢視已設定斷點的資訊

--"set variable

"命令格式是:

set variable varname=value

varname是變數名稱,value是變數的新值

gdb單步除錯

--"step

"當遇到乙個函式的時候,step將進入函式,每次執行一條語句,相當於vs中的f10命令

--"next

"當遇到乙個函式的時候,next將執行整個函式,相當於vs中的f5命令

--"return

"相當於在函式中直接return ,並且將value作為返回值返回給呼叫者。

--如果需要重複執行一條命令,不需要每次都鍵入命令,gdb記住了最後乙個被執行的命令,只要簡單的按

enter鍵就可以重複執行最後的命令

gdb除錯帶引數的程式

進入gdb除錯介面

輸入引數命令set args 後面加上程式所要用的引數,注意,不再帶有程式名,直接加引數,如:

setargs a.txt b.txt

回車後輸入 run

gdb多檔案除錯

如果除錯的檔案不在當前目錄下,需要將檔案目錄載入到程式中,如果在當前目錄下不需要載入目錄

--命令列 "

dir ../common

"在檔案中新增斷點

--命令列 "

bread helper.c:68

" 在helper.c檔案的第68行加斷點

跳出迴圈:

until linenum

執行到乙個比當前行號大的行,或者也可以指定在當前frame中的某一行

跳出函式:

finish

執行,直到選定的frame執行結束,然後列印返回值,將其放入歷史值中,停止

gdb多執行緒除錯

在多執行緒程式設計中,經常會遇到死鎖問題,這時候需要使用pstack命令來檢視執行緒在哪個函式中鎖住了

Linux gdb偵錯程式

除錯 觀察程式的執行錯誤,通常目的是為了排查程式的執行錯誤 編譯錯誤 鏈結錯誤 執行時錯誤 執行時邏輯不對以及執行時程式崩潰 程式必須是乙個debug版本的程式 gcc g 預設生成releas版本的程式,若要生成debug版本,則使用 g選項,例如 gcc g test.c o test.exe ...

linux GDB偵錯程式的使用

gdb 偵錯程式 除錯是所有程式設計師都會面臨的問題。如何提高程式設計師的除錯效率,更好更快地定位 程式中的問題從而加快程式開發的進度,是大家共同要面對問題。就如讀者熟知的 windows 下的一些除錯工具,如 vc 自帶的如設定斷點 單步跟蹤等,都受到了廣大使用者 的讚賞。那麼,在 linux 下...

python的偵錯程式 Python 偵錯程式入門

python 生態系統包含豐富的工具和庫,可以讓開發人員更加舒適。例如,我們之前已經介紹了如何使用互動式 shell 增強 python。本文重點介紹另一種可以節省時間並提高 python 技能的工具 python 偵錯程式。python 偵錯程式 python 標準庫提供了乙個名為 pdb 的偵錯...