Linux系統 gdb彙編級除錯C語言程式

2021-08-20 17:48:26 字數 954 閱讀 8073

彙編級除錯

1.進入gdb:gdb ./progarm

2.對程式打斷點

break main:c語言級的斷點,break *main+偏移量:彙編級斷點

3.r :執行程式

4. 檢視記憶體: x /5xw 0xbffff0a4 ,檢視五個資料,以十六進製制(x,o,d,s,s為以字串形式顯示) , 乙個資料長度為四(w,b)

5. 檢視反彙編:disassem  函式名稱 或者 x /25i phase_2(也就是標識)

6.檢視變數、暫存器:p $esp或者 p abc 或者 info r

7.設定暫存器:set $eax = 0

10.進入函式:stepi(彙編級), step(c語言級)

c語言級別除錯

11. display /fmt:格式字串,:表示式, 位址

12.l :列出原始碼

13.c :繼續執行程式

14. bt: 檢視函式堆疊段 bt 棧頂上n層  bt<-n>:棧底下n層

15. finish: 退出函式

16. q退出gdb

objdump反彙編工具相關命令

objdump -t 可執行檔名 打出可執行檔案的符號表

objdump -d 檔案1 > 檔案2 將檔案1反彙編出來儲存到檔案2中

objdump -strings 檔案1 顯示檔案1中所有可列印的字串

objdump -d 檔案1 > 檔案2 將檔案1中的反彙編(包括全域性變數等)按照段的形式列印輸出到檔案2

gcc 相關命令

gcc -m32 -c 檔案1.s   將檔案1.s彙編檔案匯編成二進位制目標檔案(結合objdump -d可以獲得彙編檔案的機器碼)

gcc -s 檔案1.c 將檔案1.c編譯成彙編檔案

gdb中彙編除錯

第五周學習總結 輸入的 使用gcc g example.c o example m32指令在64位的機器上產生32位彙編 刪除gcc產生 中以 開頭的編譯器指令,針對每條指令畫出相應棧幀的情況 使用gdb example指令進入gdb偵錯程式 使用 r 命令執行 run 被除錯檔案,因為尚未設定任何...

Linux系統 gdb除錯技巧

gdb除錯技巧 前言 我們知道,在linux環境下除錯 是不輕鬆的,至少很多ide整合開發環境下的除錯工具都比linux下的除錯要好用。但是linux也有像gdb這樣的工具,幫助我們進行相對方便的除錯。使用 g選項允許gdb除錯 我們在linux環境下編譯 時,預設生成的可執行檔案是沒有辦法使用 g...

Linux系統下GDB除錯

gdb 一.gdb常用命令 命令描述 backtrace 或bt 檢視各級函式呼叫及引數 finish 連續執行到當前函式返回為止,然後停下來等待命令 frame 或f 幀編號 選擇棧幀 info 或i locals 檢視當前棧幀區域性變數的值 list 或l 列出源 接著上次的位置往下列,每次列1...