我正在调试一个应用程序,需要查看存储在
rcx
通常,对于代码,这将通过选择变量(指针)并添加快速观察以及从指针开始观察的元素数量来完成:
我想把指向字符串的指针移入
钢筋混凝土
在下面的代码中:
#include <stdio.h>
int main() {
000000013F1217C0 push rbp
000000013F1217C2 push rdi
000000013F1217C3 sub rsp,0E8h
000000013F1217CA lea rbp,[rsp+20h]
000000013F1217CF mov rdi,rsp
000000013F1217D2 mov ecx,3Ah
000000013F1217D7 mov eax,0CCCCCCCCh
000000013F1217DC rep stos dword ptr [rdi]
goto mylabel;
000000013F1217DE jmp $mylabel (013F1217EEh)
000000013F1217E0 jmp $mylabel (013F1217EEh)
printf("Skipped\n");
000000013F1217E2 lea rcx,[string "Skipped\n" (013F129C28h)]
000000013F1217E9 call printf (013F1211CCh)
mylabel:
printf("goto ftw!\n");
000000013F1217EE lea rcx,[string "goto ftw!\n" (013F129C38h)]
000000013F1217F5 call printf (013F1211CCh)
return 0xf00d;
000000013F1217FA mov eax,0F00Dh
}
000000013F1217FF lea rsp,[rbp+0C8h]
000000013F121806 pop rdi
000000013F121807 pop rbp
000000013F121808 ret
如何获得rcx所指的值?在汇编中,语法为:
[rcx+index]
但我怎样才能在visual studio中看到价值呢?
我已尝试添加:
[rcx]
[rcx],10
rcx,10
在QuickWatch中,但对于前两个条目,我得到了:
不允许使用类型名称
最后我不能取消引用
钢筋混凝土
,如前所示。
编辑:
将值转换为
钢筋混凝土
将其转换为所需类型。在上述情况下,将在
(char*)rcx
在调试窗口中显示整个字符串。对于其他类型(即整数),还需要在手表中指定元素的数量,否则只显示第一个值。例如
(int*)rcx, 10
显示从存储在
钢筋混凝土
。必须针对寄存器中存储的每个数据调整类型。