我想检查方法的返回值,而不必重新执行方法本身.我相信我唯一的选择是使用反汇编程序.在阅读了对Stackflow问题
Getting a Method’s Return Value in the VS Debugger的回复后,我得出了这个结论.
我认为寄存器EAX中的值是我的返回值.如何在调试器中检查EAX指向的对象?这是我的反汇编退货声明.
30: return SomeString(); 000001bb mov ecx,dword ptr [ebp-3Ch] 000001be call FFF7A320 000001c3 mov dword ptr [ebp-78h],eax 000001c6 mov eax,dword ptr [ebp-78h] 000001c9 mov dword ptr [ebp-4Ch],eax 000001cc nop 000001cd jmp 000001D8 000001cf mov dword ptr [ebp-1Ch],0 000001d6 jmp 000001BA 31: } 000001d8 mov eax,dword ptr [ebp-4Ch] 000001db lea esp,[ebp-0Ch] 000001de pop ebx 000001df pop esi 000001e0 pop edi 000001e1 pop ebp 000001e2 ret
解决方法
从“寄存器”窗口中,选择EAX寄存器值并按Ctrl C.调试Windows内存1.在“地址”文本框中,键入0x,Ctrl V,键入12. 12跳过System.Object标头.如果它包含ASCII字符,则在右侧读取它应该没什么问题,忽略空值.