GDB에서 레지스터 값을 인쇄하는 방법은 무엇입니까?
%eax
및 의 값을 어떻게 인쇄 %ebp
합니까?
(gdb) p $eax
$1 = void
info registers
모든 레지스터를 보여줍니다. info registers eax
레지스터 만 표시합니다 eax
. 이 명령은 다음과 같이 축약 될 수 있습니다i r
GDB에서 특정 레지스터를 인쇄하려는 경우 % 기호를 생략해야합니다. 예를 들어
info registers eip
실행 파일이 64 비트이면 레지스터는 r로 시작합니다. e로 시작하는 것은 유효하지 않습니다.
info registers rip
그것들은 다음과 같이 축약 될 수 있습니다 :
i r rip
도 있습니다:
info all-registers
그러면 원하는 레지스터 이름을 얻을 수 있습니다. ARM의 NEON Q ...와 같은 플랫폼 별 레지스터를 찾는 데 매우 유용합니다.
- 한 번만 확인하려면
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> ...
: 예를 들어, 여러 개의 레지스터를 인쇄i r rdi rsi
,i r
: 부동 소수점 및 벡터 레지스터 (xmm, ymm, zmm)를 제외한 모든 레지스터를 인쇄합니다.i r a
: 모든 레지스터를 인쇄하고 부동 소수점 및 벡터 레지스터를 포함합니다 (xmm, ymm, zmm).i r f
: 모든 FPU 부동 레지스터를 인쇄합니다 (st0-7
및 기타 몇 개f*
).
a
( all
) 및 f
( float
) 이외의 다른 레지스터 그룹 은 다음을 통해 찾을 수 있습니다.
maint print reggroups
:에 설명 된대로 https://sourceware.org/gdb/current/onlinedocs/gdb/Registers.html#Registers
팁 :
xmm0
~xmm15
, 128 비트, 거의 모든 현대 기계가 가지고 있으며 1999 년에 출시되었습니다.ymm0
~ymm15
, 256 비트, 새로운 기계는 보통 그것을 가지고, 그들은 2011 년에 발표했다.zmm0
~zmm31
, 512 비트, 일반 PC에는 아마도 ( 2016 년 ), 2013 년에 출시되어 주로 서버에서 사용됩니다.- xmm / ymm / zmm의 직렬은 서로 다른 모드에서 동일한 레지스터이기 때문에 하나만 표시됩니다. 내 컴퓨터에는 ymm이 표시됩니다.
p $eax
GDB 7.7.1부터 작동
GDB 7.7.1부터 시도한 명령이 작동합니다.
set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1
이 구문은 부동 소수점 또는 정수일 수있는 ARM 부동 소수점 레지스터와 같은 다른 공용체 멤버를 선택하는 데에도 사용할 수 있습니다.
p $s0.f
p $s0.u
에서 워드 프로세서 :
사전 정의 된 머신 특정 레지스터 이름 중 하나가 아닌 한, '$'가 앞에 오는 이름은 편의 변수에 사용할 수 있습니다.
그리고 :
표현식에서 기계 레지스터 내용을 '$'로 시작하는 이름을 가진 변수로 참조 할 수 있습니다. 레지스터 이름은 기계마다 다릅니다. 정보 레지스터를 사용하여 컴퓨터에서 사용 된 이름을 봅니다.
그러나 지금까지 제어 레지스터는 그리 운이 없었습니다. 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
ARM 부동 소수점 레지스터
참고 URL : https://stackoverflow.com/questions/5429137/how-to-print-register-values-in-gdb
'Programing' 카테고리의 다른 글
IE 5에서 HTML5 사용자 정의 데이터 속성이 "작동"합니까? (0) | 2020.05.23 |
---|---|
입력 내부에 텍스트를 정렬하는 방법은 무엇입니까? (0) | 2020.05.23 |
“git branch”와“git checkout -b”의 차이점은 무엇입니까? (0) | 2020.05.23 |
PHP 5는 엄격한 표준 오류를 비활성화 (0) | 2020.05.23 |
이 예제에서 java.util.ConcurrentModificationException이 발생하지 않는 이유는 무엇입니까? (0) | 2020.05.23 |