2014-12-13 8 views
0

어셈블리를 직접 가르치려고하고 있으며 LLDB를 사용하여 디버깅하고 있습니다. 지금까지는 그렇게 좋았지 만 레지스터에 저장된 주소에서 메모리를 검사하는 빠른 방법이 있는지 궁금합니다. 물론레지스터를 사용하여 LLDB로 읽을 메모리 지정

, 나는

register read rbp 

(예를 들어)을 수행하고

memory read <address> ... 

를 통해 주소를 사용하지만 정말 인수에 직접 레지스터 이름을 사용하고 싶습니다 수 있습니다 'memory'명령 (가능하면 오프셋이 있음)으로 이동하십시오. 그것은 자연스럽게 보이는 것처럼 보이지만, 지금까지 나는 이것에 관해 무엇인가를 찾을 수 없었습니다.

답변

1

당신은 예를 들어, 표시 메모리 내용을 보려면

(lldb) x $eax 
0x799be060: f0 e6 1c 01 04 00 00 00 88 23 04 00 98 23 04 00 .........#...#.. 
0x799be070: a8 23 04 00 b8 23 04 00 00 00 00 00 00 00 00 00 .#...#.......... 

을 사용할 수 있습니다 4 플로트, 사용

(lldb) x/4f $eax 
0x799be060: 0.0000000000000000000000000000000000000288183643 
0x799be064: 0.00000000000000000000000000000000000000000000560519386 
0x799be068: 0.000000000000000000000000000000000000000380088195 
0x799be06c: 0.000000000000000000000000000000000000000380110616 
+0

완벽하게, 감사합니다! – 196884

+0

돈의 대답을 약간 확장하면됩니다. "x"에 대한 도움말을 보면 인수가 "주소 표현식"목록이고, "주소 표현식"에 대한 도움말을 실행하면 "다음으로 해석되는 표현식"이라고 말할 것입니다. 주소". lldb에있는 레지스터를 포함한 모든 편의 변수 앞에는 $가 접두사로 붙습니다. 그래서 표현식에 $를 사용해야합니다. 또한 원하는대로 더 일반적인 표현을 사용할 수 있습니다. 명령 줄은 공백으로 구분되므로 공백을 보호하기 위해 따옴표를 사용해야한다는 것을 기억하십시오. –

관련 문제