Câu trả lời:
info registers
hiển thị tất cả các thanh ghi; info registers eax
chỉ hiển thị đăng ký eax
. Lệnh có thể được viết tắt lài r
info registers eax
. Tôi không chắc chắn nếu điều này là khác nhau cho các phiên bản khác nhau của gdb, mặc dù.
register read [eax]
display
. Ví dụ display $eax
.
Ngoài ra còn có:
info all-registers
Sau đó, bạn có thể nhận được tên đăng ký mà bạn quan tâm - rất hữu ích để tìm các thanh ghi dành riêng cho nền tảng (như NEON Q ... trên ARM).
eax
, ecx
và đăng ký tiêu chuẩn khác ẩn bởi info registers
. Đây có lẽ nên là câu trả lời được chấp nhận.
Các lệnh của Btb :
i r <register_name>
: In một thanh ghi duy nhất, ví dụ i r rax
,i r eax
i r <register_name_1> <register_name_2> ...
: In nhiều đăng ký, ví dụ i r rdi rsi
,i r
: in tất cả các thanh ghi trừ dấu phẩy động & thanh ghi vector (xmm, ymm, zmm).i r a
: in tất cả các thanh ghi, bao gồm thanh ghi dấu phẩy động & dấu phẩy động (xmm, ymm, zmm).i r f
: in tất cả các thanh ghi nổi FPU ( st0-7
và một vài cái khác f*
)Các nhóm đăng ký khác ngoài a
( all
) và f
( float
) có thể được tìm thấy với:
maint print reggroups
như tài liệu tại: https://sourceware.org/gdb/cản/onlinesocs/gdb/Registers.html#Registers
Mẹo :
xmm0
~ xmm15
, là 128 bit, hầu hết mọi máy hiện đại đều có nó, chúng được phát hành vào năm 1999.ymm0
~ ymm15
, là 256 bit, máy mới thường có nó, chúng được phát hành vào năm 2011.zmm0
~ zmm31
, là 512 bit, máy tính bình thường có thể không có nó ( như năm 2016 ), chúng được phát hành vào năm 2013 và chủ yếu được sử dụng trong các máy chủ cho đến nay.p $eax
hoạt động như của GDB 7.7.1
Kể từ GDB 7.7.1, lệnh bạn đã thử hoạt động:
set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1
Cú pháp này cũng có thể được sử dụng để chọn giữa các thành viên hợp nhất khác nhau, ví dụ như các thanh ghi dấu phẩy động ARM có thể là dấu phẩy động hoặc số nguyên:
p $s0.f
p $s0.u
Từ các tài liệu :
Bất kỳ tên nào đứng trước '$' đều có thể được sử dụng cho một biến tiện lợi, trừ khi đó là một trong những tên đăng ký cụ thể của máy được xác định trước.
và :
Bạn có thể tham khảo nội dung đăng ký máy, theo biểu thức, dưới dạng các biến có tên bắt đầu bằng '$'. Tên của các thanh ghi là khác nhau cho mỗi máy; sử dụng các thanh ghi thông tin để xem tên được sử dụng trên máy của bạn.
Nhưng tôi chưa gặp nhiều may mắn với các thanh ghi điều khiển cho đến nay: OSDev 2012 http://f.osdev.org/viewtopic.php?f=1&t=25968 || Yêu cầu tính năng năm 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
Thanh ghi dấu phẩy động ARM
Xem: /reverseengineering/8992/floating-point-registers-on-arm/20623#20623
$
cú pháp này .
layout reg
để có gdb hiển thị một bảng gồm tất cả các thanh ghi số nguyên và cờ, làm nổi bật một (các) thay đổi theo hướng dẫn trước đó. Xem stackoverflow.com/tags/x86/info chẳng hạn.