如何查看未与调试器一起存储的方法返回值

时间:2015-12-15 10:19:55

标签: c# visual-studio debugging visual-studio-2013 visual-studio-debugging

在Visual Studio 2013中,我如何找出未存储在任何位置的方法返回的值。

让我们假设方法在DLL中,我没有源代码,因此我无法在返回行设置断点。

示例用例1:

if(GetEnumResponse() == MyEnums.MyValue)
{
   // Do Stuff
}

示例用例2:

var Response = (MyResponse)GetResponse();

在示例1中,如果我期望条件为真但是为假,我如何使用调试器找出GetEnumResponse()的结果是什么?

在示例2中,如果强制转换导致无效的强制转换异常,我如何查看GetResponse()的结果是什么?

2 个答案:

答案 0 :(得分:1)

最简单的解决方案是更改调用方法的方式,将返回值放入可以查询的局部变量中。

案例1:

var result = GetEnumResponse();
if (result == MyEnums.MyValue)
{
   // Do Stuff
}

案例2:

var result = GetResponse();
var Response = (MyResponse)result;

如果您愿意,您甚至可以将此代码留在生产中,因为它在功能上与您现在拥有的相同。

答案 1 :(得分:1)

您可以在Visual Studio中使用Immediate(Debug - > Windows - > Immediate)。 在这里,您可以评估表达式并查看结果。

函数的返回值显示在“自动”选项卡中,或者您可以在函数返回时使用即时窗口中的$ResultValue

See points 6 and 7 on this blog post about seeing function return values in the debugger