gdb 常用命令

2022-05-18 01:17:26 字數 2123 閱讀 6854

1,啟動程式

2,常用命令

3,設定斷點

設定條件斷點

設定臨時斷點:tbreak args

設定乙個只中斷一次的斷點。args 和break 命令裡的引數一樣,斷點設定也一樣,但斷點在第一次程式中斷後自動 刪除。

用正規表示式設定斷電:rbreak regex

在所有匹配正規表示式regex 的函式上設定斷點。這個命令會在所有匹配的函式上設定無條件的斷點,也列印設定的斷點列表

正規表示式的語法是標準的,就如grep工具用的一樣。注意,和shell用的不一樣,例如foo匹配開頭是fo,接下來有0 或者多個o 的函式。在你的正規表示式的開頭和結尾有個隱含的.,所以要想只匹配foo 開頭的函式,用^foo.在除錯c++程式,在非特定類的成員函式的過載函式的設定斷點上,rbreak 很有用。

直接執行rbreak:在所有函式上設定斷點。

4,檢視原始檔

5,檢視設定了哪些斷點

6,刪除斷點

例子:先用info b檢視有哪些斷點,注意num列,如果想刪除【src/add.c:4】處的斷點,就執行【d 2】

(gdb) info b

num type disp enb address what

2 breakpoint keep y 0x0000555555554667 in add at src/add.c:4

3 breakpoint keep y 0x000055555555468b in main at main.c:5

刪除3號(src/add.c:4處的)斷點:

(gdb) d 2
再用info b看看,發現2號斷點沒有了。

(gdb) info b

num type disp enb address what

3 breakpoint keep y 0x000055555555468b in main at main.c:5

7,檢視變數的值和變數的型別

8,設定程式的啟動引數

9,修改變數的值

10,檢視幫助

11,每次單步執行都想觀察變數的值,請使用【display】,不想看了,就用【undisplay】加num的號碼

12,除錯core檔案,當出現:段錯誤(核心已轉儲)[segmentation fault (core dumped)]時,可以使用【gdb 程式名 core檔名】後,就能直接看到在哪行出錯,如果沒有顯示,可以輸入【where】,也可以定位到哪行出錯。

但是core檔案預設是不被生成的,如何讓它生成呢,

程式第一次執行出了[segmentation fault]錯誤後,就會在當前目錄生成乙個名字為【core】的檔案,問題來了,如果又執行了一次,又出了[segmentation fault]錯誤後,又會生成乙個【core】,這次的【core】就會覆蓋掉上次的【core】,所以就需要設定如何生成【core】的檔名,達到每次生成的【core】的名字都不相同,就不會覆蓋掉上次的core檔案了。

選項如下:

%p:insert pid into filename 新增pid

%u:insert current uid into filename 新增當前的uid

%g:insert current gid into filename 新增當前的gid

%s:insert signal that caused the coredump into the filename 新增導致產生core的訊號

%t:insert unix time that the coredump occurred into filename 新增core檔案生成時間的unix時間

%e:insert coredumping executable name into filename 新增程式名

修改辦法:

gdb常用命令

gnu的偵錯程式稱為gdb,是乙個互動式的程式,工作在字元模式。其常用命令如下 break num 在指定的行上設定斷點 break 1 bt 顯示函式的呼叫順序 clear 刪除斷點 clear test.c 10 display expr 每次程式停止後顯示表示式的值 printf expr顯示...

GDB常用命令

1 執行 run2 單步執行 step next finish 一直執行到函式返回 until 執行到某一行 3 斷點 break args break 12 break 10 hbreak args 硬體輔助斷點 thbreak args rbreak args info breakpoints ...

gdb 常用命令

呼叫gdb編譯需要在cc後面加 g引數再加 o root redhat home gdb 除錯檔案 啟動gdb gdb l 字母l 從第一行開始列出原始碼 gdb break n 在第n行處設定斷點 gdb break func 在函式func 的入口處設定斷點 gdb info break 檢視斷...