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時就可以自動載...