彙編級除錯
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...