回答
info registers
顯示所有寄存器; info registers eax
卻與此註冊eax
。該命令可以。如果你想打印GDB一個特定的寄存器縮寫爲i r
我得到:無效的寄存器'%eax中」 如果我只是做‘信息登記’EAX不出來。然而,我期待在IDE我的代碼組件,其中一個EXC_BAD_ACCESS信號已與指令生成的:測試%EAX,EAX% 這是XCode中運行GDB。 gdb爲什麼不報告eax寄存器? – NoahR 2011-10-20 18:45:00
同樣的問題:%eax在代碼中,但是print $ eax顯示void。 – 2012-10-08 16:42:33
Bridgette的答案適合我。 geekosaur的答案大部分都是正確的,但是你需要省略%符號,所以特定寄存器的命令是'info registers eax'。不過,我不確定這是不同版本的gdb。 – Kevin 2012-10-10 03:59:10
,你必須忽略%的跡象。例如,
info registers eip
如果你的可執行文件是64位寄存器開始與河用e開始它們是無效的。
info registers rip
那些可以縮寫爲:
i r rip
還有:
info all-registers
然後你就可以得到註冊名,你有興趣 - 尋找非常有用的平臺 - 特定的寄存器(如ARM上的NEON Q ...)。
這個教導是關於我不知道存在的寄存器:-) – 2015-05-09 09:29:52
在我的機器上,這將打印'info寄存器'隱藏的'eax','ecx'和其他標準寄存器。這應該可以被接受的答案。 – EntangledLoops 2016-12-20 16:51:26
由於GDB 7.7.1,命令你試過作品:
set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1
從the docs:
通過 '$' 開頭的任何名稱可用於慣用變量,除非它是預定義的特定於計算機的寄存器名稱之一。
and:
你可以參考機器的寄存器內容,表現形式,如以「$」名稱的變量。每臺機器的寄存器名稱不同;使用信息寄存器來查看您的機器上使用的名稱。
但我還沒有與控制寄存器的運氣至今:OSDev 2012 http://f.osdev.org/viewtopic.php?f=1&t=25968 || 2005功能請求https://www.sourceware.org/ml/gdb/2005-03/msg00158.html || alt.lang.asm 2013 https://groups.google.com/forum/#!topic/alt.lang.asm/JC7YS3Wu31I
- 如果只想檢查一次,
info registers
顯示寄存器。 - 如果僅希望觀看一個寄存器,例如,
display $esp
繼續在gdb命令行顯示ESP寄存器。 - 如果想觀看所有的寄存器,
layout regs
繼續顯示寄存器,以TUI模式。
GDB命令:
i r <register_name>
:打印單個寄存器,例如克i r rax
,i r eax
i r <register_name_1> <register_name_2> ...
:打印多個寄存器,e.gi r rdi rsi
,i r
:打印所有寄存器除了浮點&矢量寄存器(XMM,YMM,ZMM)。i r a
:打印所有寄存器,包含浮點數&矢量寄存器(xmm,ymm,zmm)。
提示:
xmm0
〜xmm15
,爲128位,幾乎每一個現代化的機器,他們是在1999年ymm0
〜ymm15
發佈,是256位,新機通常有它,他們被釋放在2011年zmm0
〜zmm31
,有512位,正常的電腦可能沒有它(爲2016年),他們被釋放在2013年,主要用於在服務器爲止。- 只有XMM/YMM /個zmm的一個串行將被示出,因爲它們是在不同的模式中是相同的寄存器。在我的機器上顯示ymm。
- 1. 如何在gdb中打印std :: map值
- 2. gdb:打印AArch64高級SIMD矢量寄存器(有可能嗎?)
- 3. 如何更改GDB中的eflags寄存器值?
- 4. 如何使用gdb獲取存儲在寄存器中的值? 「p/x $ ebx」因「沒有寄存器」而失敗。
- 5. 如何使用gdb讀取所有寄存器的值?
- 6. 如何在gdb中使用python訪問寄存器
- 7. 在gdb中打印QUrl的值
- 8. 如何在gdb中打印Java數組?
- 9. 如何在gdb中打印wstring
- 10. 如何在gdb中打印-0x4(%rbp)?
- 11. 如何在GDB中打印#defined常量?
- 12. 如何在GDB中打印Fortran數組?
- 13. 在GDB中如何打印0xc(%rsp)?
- 14. Gdb,如何使用打印?
- 15. gdb:如何打印ASM內存地址的值
- 16. ARM彙編件打印寄存器值十進制
- 17. 有沒有辦法讓sbcl打印出CPU寄存器的值?
- 18. 如何使用PutInt從寄存器CL打印
- 19. 如何轉儲gdb中的所有XMM寄存器?
- 20. gdb和strncmp,寄存器的值是否存儲?
- 21. 打印包含在寄存器中的號碼
- 22. x86_64上的gdb eflags寄存器
- 23. 如何使用gdb轉儲ARM協處理器寄存器?
- 24. 如何在GDB中漂亮地打印STL容器?
- 25. 如何在存儲的打印中打印返回值?
- 26. 如何在Visual Studio中的斷點的「何時命中」子句中打印寄存器的值?
- 27. 寄存器值8086
- 28. 如何讓GDB在「踏入」時不打印函數參數值?
- 29. 組件打印的十六進制數在寄存器
- 30. 如何查看寄存器上的值?
使用'佈局reg'具有GDB顯示所有整數和標誌寄存器的一個表,突出由前一指令改變所述一個(多個)。例如,請參閱http://stackoverflow.com/tags/x86/info。 – 2015-07-25 20:08:52