在VS调试器中获取方法的返回值

Bul*_*nes 17 c# debugging visual-studio

是否可以在Visual Studio调试器中获取方法的返回值,即使该值未分配给局部变量?例如,我正在调试以下代码:

public string Foo(int valueIn)
{
    if (valueIn > 100)
        return Proxy.Bar(valueIn);
    else
        return "Not enough";
}
Run Code Online (Sandbox Code Playgroud)

因为我没有在Foo中设置任何局部变量,并假设我没有在任何调用Foo中设置断点,如果我在Foo中有一个断点(或者其他方式),有没有办法看到返回值是什么)?我对Autos或中级窗口没有太多经验,所以我不确定这些是否是有效选项.

Fre*_*örk 6

您可以在Foo中设置断点,打开即时窗口并运行以下命令:

? Foo(valueIn)
Run Code Online (Sandbox Code Playgroud)

这将在立即窗口中打印返回值.

您也可以复制表达式并将其粘贴到Watch窗口中,但只有在我确定该调用没有副作用时才会这样做(否则您会得到令人困惑的结果).

  • 这将再次执行该功能,这不一定是个好主意. (13认同)
  • 在快速观看窗口或即时窗口中使用 `$ReturnValue` Visual Studio 调试器变量会好得多,而且没有风险。看看[这里](http://stackoverflow.com/questions/268048/can-i-find-out-the-return-value-before-returning-while-debugging-in-visual-studi) (2认同)

Rob*_*ker 5

您始终可以切换到反汇编视图并逐步执行各个指令.在执行'ret'指令之前,返回值将在@eax(或@rax)中.