【问题标题】:Inspecting the returned value of a function on the return line of a method in Visual Studio在 Visual Studio 中的方法的返回行上检查函数的返回值
【发布时间】:2012-07-10 14:43:05
【问题描述】:

我有这样一行代码

return foo(barIn);

如果我在行上放置一个断点,我可以在不进入 foo 的情况下检查 foo(barIn) 的返回值吗?我可以将代码重写为

var result = foo(barIn);
return result;

但我希望不重写也不脱离当前代码的便利。

========== 编辑 ==========

最初的四个答案很有趣(谢谢),但它们实际上并没有回答我的问题。让我试着更清楚一点。

在这个方法中

public string functionA()
{
    return functionB();
}

在 Visual Studio 2012 中有没有办法在“return functionB();”行上放置一个断点并检查 functionB 的返回值,而不进入 functionB,重新运行 functionB,或重写 functionA?

【问题讨论】:

  • 您可能需要检查this。自 VS 2013 以来,Visual Studio 现在有了新的进步。

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


【解决方案1】:

不,您无法满足这种确切的行为。见Can I find out the return value before returning while debugging in Visual Studio。你能得到的最接近的是:

如果foo 是幂等的(即它没有任何副作用),那么您可以将手表添加到foo(barIn)

如果它确实有副作用,那么将断点放在return,然后跳出(Shift+F11 默认情况下)函数并检查函数结果分配给的变量。

【讨论】:

  • 是的,我知道我可以退出函数(并且很好地调用幂等性,它不是),但我正在寻找一种在 foo 返回之前收集 foo 返回的值的方法'return' 语句传递它。由于所有四个答案都没有涵盖这种情况,我猜(1)一个不能,(2)我的问题不清楚。我会编辑它。
  • 您的问题的答案是“否”。我相信我上面的答案是您可以找到的最接近您正在寻找的功能的答案。我已经更新了我的问题,并提供了完整问题的答案。
  • “否”绝对是一个答案。现在我会标记它,因为编辑清楚地表明了这一点。
  • 您可能需要查看this。自 VS 2013 以来,Visual Studio 现在有了新的进步。
【解决方案2】:

您始终可以使用F11 进入函数,然后使用F10 遍历函数并查看它返回的内容。

【讨论】:

  • 我知道 - 但我很想看看是否有人可以做到这一点“不进入 foo”,正如我在问题中提到的那样
【解决方案3】:

您可以添加foo(barIn) 的手表或快速手表以查看结果。只需突出显示它并右键单击即可。调试时上下文菜单中有选项。如果运行该方法两次而不是一次会导致不良影响,请小心。

【讨论】:

  • 可悲的是 foo 有副作用,所以我不能再运行一次
【解决方案4】:

如果你在监视窗口中写 foo(barIn) ,你可以在监视窗口中看到返回值,但是这会导致你的 foo 方法被调用两次,有时这不是你想要发生的,所以将值设置为一个变量并返回它是最好的方法。如果你有代码,你可以随时进入 foo。

【讨论】:

  • 这是我通常最终会做的事情,你无法在 foo 调用之后和调试器返回之前拦截它的结果似乎很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 1970-01-01
  • 2014-01-21
  • 1970-01-01
  • 2011-10-02
  • 2018-04-22
相关资源
最近更新 更多