12GDB在無符號表情況下除錯程式

2022-09-18 20:39:12 字數 710 閱讀 1220

1)載入無符號表程式

2)斷點到某乙個函式,通過tab鍵可以模糊匹配查詢要斷點的函式

3)執行程式

4)檢視第乙個引數暫存器:i r rdi,我們傳入的是字元a,可以看到檢視到的值是97(字元a的ascii),符合預期。

5)檢視第二個引數暫存器:i r rsi,我們傳入的是整數876,可以看到檢視到的值也是876

6)檢視第三個引數暫存器:i r rdx,我們傳入的是字串"abcd",可以看到檢視到,我們只能看到位址,但是可以通過該位址,使用以下兩種方式獲取到對應的真正的值:

a)p (char*)0x400ed5

b)x /s 0x400ed5,其中s代表是字串格式

c) x /s $rdx,檢視儲存字串引數暫存器的位址

另外,說明如下:

a. 函式引數暫存器如下:

rdi 第乙個引數

rsi 第二個引數

rdx 第三個引數

rcx 第四個引數

r8 第五個引數

r9 第六個引數

多於6個的引數會放到函式棧裡面了,而不是放到暫存器裡了。

b. 檢視所有通用暫存器:

i registers

c. 檢視所有暫存器:(不常用)

i registers

每天學點GDB 12

本文介紹在archlinux環境下,如何進行核心使用gdb配合qemu進行除錯。1.安裝qemu 2.編譯linux kernel 選擇最新的核心版本,規避gcc編譯出錯的問題具體步驟如下 2.1 make mrproper 2.2 make arch i386 menuconfig 選中kerne...

1 2 程式設計基礎 GDB程式除錯

gdb是gnu發布的一款功能強大的程式除錯工具。gdb主要完成下面三個方面的功能 1.啟動被除錯程式 2.讓被除錯的程式在指定的位置停住。3.當程式被停住時,可以檢查程式狀態 如變數值 1.編譯生成可執行檔案 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設...

在gdb中列印QString

gdb的print命令只能列印基本資料型別,像qstring這樣的複雜型別就不行了。如果在除錯過程中 命令列,或者xcode中 不能看qstring的值,豈不是很不爽。幸好,gdb提供了擴充套件功能,可以自定義巨集命令。把自定義的命令放到 home gdbinit檔案中,每次啟動gdb時就可以自動載...