Yanıtlar:
info registers
tüm kayıtları gösterir; info registers eax
sadece kaydı gösterir eax
. Komut şu şekilde kısaltılabiliri r
info registers eax
. Gerçi bunun farklı gdb sürümleri için farklı olup olmadığından emin değilim.
register read [eax]
display
. Örneğin display $eax
.
Ayrıca birde şu var:
info all-registers
Daha sonra ilgilendiğiniz kayıt adını alabilirsiniz - platforma özgü kayıtları bulmak için çok yararlıdır (ARM'de NEON Q ... gibi).
eax
, ecx
ve diğer standart kayıtlar tarafından gizlenmiş info registers
. Bu muhtemelen kabul edilen cevap olmalıdır.
info registers
kayıtları göster.display $esp
, gdb komut satırında esp kayıtlarını görüntülemeye devam edin.layout regs
, TUI modu ile kayıtları göstermeye devam edin.GDB komutları :
i r <register_name>
: tek bir kayıt yazdırın, ör i r rax
.i r eax
i r <register_name_1> <register_name_2> ...
: birden çok kayıt yazdırın, ör i r rdi rsi
.i r
: kayan nokta ve vektör kaydı (xmm, ymm, zmm) hariç tüm kayıtları yazdırın.i r a
: tüm kayıtları yazdır, kayan nokta ve vektör kaydını dahil et (xmm, ymm, zmm).i r f
: tüm FPU kayan kayıtlarını ( st0-7
ve birkaçını f*
) yazdırına
( all
) Ve f
( float
) dışındaki diğer kayıt grupları şununla bulunabilir:
maint print reggroups
belgelendiği gibi: https://sourceware.org/gdb/current/onlinedocs/gdb/Registers.html#Registers
İpuçları :
xmm0
~ xmm15
, 128 bit, hemen hemen her modern makine var, 1999 yılında piyasaya sürüldü.ymm0
~ ymm15
, 256 bit, yeni makine genellikle var, 2011 yılında piyasaya sürüldü.zmm0
~ zmm31
, 512 bit, normal pc muhtemelen yok ( 2016 yılı olarak ), 2013 yılında piyasaya sürüldü ve çoğunlukla şu ana kadar sunucularda kullanılıyor.p $eax
GDB 7.7.1 itibariyle çalışır
GDB 7.7.1'den itibaren denediğiniz komut çalışır:
set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1
Bu sözdizimi, örneğin kayan nokta veya tamsayı olabilen ARM kayan nokta kayıtları için farklı birleşim üyeleri arasında seçim yapmak için de kullanılabilir:
p $s0.f
p $s0.u
Gönderen docs :
Önceden tanımlanmış makineye özgü kayıt adlarından biri olmadıkça, '$' ile başlayan herhangi bir ad, kolaylık değişkeni için kullanılabilir.
ve :
Makine kaydı içeriklerine, ifadelerde '$' ile başlayan isimleri olan değişkenler olarak başvurabilirsiniz. Kayıtların adları her makine için farklıdır; makinenizde kullanılan adları görmek için bilgi kayıtlarını kullanın.
Ancak şimdiye kadar kontrol kayıtları konusunda fazla şansım olmadı: OSDev 2012 http://f.osdev.org/viewtopic.php?f=1&t=25968 || 2005 özellik isteği https://www.sourceware.org/ml/gdb/2005-03/msg00158.html || alt.lang.asm 2013 https://groups.google.com/forum/#!topic/alt.lang.asm/JC7YS3Wu31I
ARM kayan nokta kayıtları
$
sözdizimiyle ifadelerde kullanmak harika .
layout reg
Gdb'nin önceki tamsayı tarafından değiştirilenleri vurgulayarak tüm tamsayı ve bayrak kayıtlarının bir tablosunu göstermesini sağlamak için kullanın . Örneğin stackoverflow.com/tags/x86/info adresine bakın .