gdb工作的基本原理

2021-07-15 11:12:21 字數 1633 閱讀 3302

gdb組成部分

gdb由三個部分組成:

(1)使用者介面user inte***ce,除支援傳統的cli介面還支援mi介面(ddd等工具使用)

(2)符號處理層symbol handling,當gdb ./debugme後gdb會讀取檔案的符號資訊,之後的原**,變數/函式/型別的顯示都由該部分進行(everything you can do without live process)。

(3)目標系統處理層target system handling。包括執行控制,斷點設定,單步執行,堆疊分析等操作都有該部分來進行。

gdb使用技巧

1)設定斷點的方法包括:函式,行號,if條件斷點express,這些前面都可以跟上檔名。另外還可以設定位址斷點:b *0x8048424.

2)gdb用來分析core檔案,啟動格式:gdb debugme core.xyz

3)開啟core檔案生成的方法是: ulimit -c unlimited

4)在不同函式的呼叫棧上切換及檢視當前資訊:bt/frame xx/up/down/info frame/args/locals

5)除錯一正執行的程序:gdb debugme pid或者gdb debugme + attach pid + detach,類似的應用還有:strace/ltrace/truss

6)如果某個執行緒/程序處於死鎖狀態,還可以通過gcore pid來手動生成core檔案來分析當前執行緒/程序的狀態,然後利用gdb來分析, gcore使用方法:gcore pid,注意被除錯的程序會臨時性停止去生成core檔案

7)檢視函式的反彙編指令:disassemble fun_name

8)彙編指令級別的單步執行:ni/si,顯示當前執行的彙編指令: x/i $pc

9)檢視暫存器的內容:info registers/all-registers

10)檢視某位址開始的內容:x/num 0xyyyyyyy 檢視從0xyyyyyyy開始的num個單元內容;p 輸出陣列內容

11)在函式除錯中途強制返回:return ;

12)向被除錯程式傳送指定訊號:在任意一點ctrl+c進入gdb除錯命令列,然後:signal 1-15

gdb的斷點是基於訊號(signal)實現的

在某個位址增加乙個斷點,實際上就是修改那個位址的**,把原來的**替換成int 3指令,同時讓gdb捕獲這個signal並做相應的處理:包括執行被替換掉的指令,並跳轉回來。

因此,只要斷點不被走到,那麼斷點就不會影響程式的執行效率;因為程式的其他地方都沒改變,該怎麼執行還是怎麼執行。

gdb在遇到斷點之後可以做很多事情

包括:

停下來等使用者處理

自動繼續

自動執行一些gdb指令(用commands命令可以配置斷點的自動執行)

判斷條件是否要停下來(這就是大名鼎鼎的條件斷點)

在走到斷點之後,不管是路過還是停下來,都會影響效能

1. gdb除錯-基礎篇

2. gdb除錯-實現斷點

3. gdb除錯-除錯資訊

4. gdb使用及原理

5. gdb中斷原理

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

郵件系統工作基本原理

電子郵件在 internet 上傳送和接收的原理可以很形象地用我們日常生活中郵寄包裹來形容 當我們要寄乙個包裹的時候,我們首先要找到任何乙個有這項業務的郵局。在我們填寫完收件人姓名 位址等等之後,包裹通過郵政運輸系統被送到收件人所在地的郵局,然後收件方去這個郵局取回包裹。同樣的,當我們傳送電子郵件的...

pwm控制的基本原理 PWM控制的基本原理

pwm pulse width modulation 控制 脈衝寬度調製技術,通過對一系列脈衝的寬度進行調製,來等效地獲得所需要波形 含形狀和幅值 pwm控制技術在逆變電路中應用最廣,應用的逆變電路絕大部分是pwm型,pwm控制技術正是有賴於在逆 變電路中的應用,才確定了它在電力電子技術中的重要地位...