在Visual Studio 2013中,我如何找出未存储在任何位置的方法返回的值。
让我们假设方法在DLL中,我没有源代码,因此我无法在返回行设置断点。
示例用例1:
if(GetEnumResponse() == MyEnums.MyValue)
{
// Do Stuff
}
示例用例2:
var Response = (MyResponse)GetResponse();
在示例1中,如果我期望条件为真但是为假,我如何使用调试器找出GetEnumResponse()的结果是什么?
在示例2中,如果强制转换导致无效的强制转换异常,我如何查看GetResponse()的结果是什么?
答案 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