我想檢查一個方法的返回值,而不必重新執行方法本身。我相信我唯一的選擇是使用反彙編程序。在閱讀Stackflow的問題Getting a Method's Return Value in the VS Debugger後,我得出了這個結論。如何在調試器中將寄存器EAX的值顯示爲對象?
我認爲寄存器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
我可以看到寄存器的值,但我想看到的是值指向的對象。在我的情況下,我知道這是一個C#字符串。 – Don 2010-08-03 15:56:05
@Martin:只需將地址轉換爲您期望的類型即可。 – sbi 2010-08-03 15:58:01
我用C#開發,所以在調試器中使用寄存器對我來說是陌生的。你能舉個例子嗎?我有EAX = 023964F4,我相信這是我的對象引用。 – Don 2010-08-03 16:13:47