c# - 断点操作可以打印返回值吗?

标签 c# .net visual-studio debugging

我正在尝试使用断点操作输出方法返回的值。该方法包含多个不相同的返回语句,类似于此示例:

double Foo(int bar, int baz)
{
    if (bar < 0)
        return Math.Sqrt((double)(baz - bar) * (baz - bar));

    if (bar % baz == 0)
    {
        if (baz == 3)
        {
            return bar / 2 * baz;
        }
        else
        {
            return Math.Pow(bar, baz);
        }
    }

    return Math.Log(baz, bar);
}

我正在寻找一种输出返回值的方法,而无需重构该方法,以便将值存储在变量中,或者在每个返回语句上放置断点,并且必须为每个返回语句编写单独的操作。

已接受的答案 this question表明可以在离开方法之前在立即窗口中使用 $ReturnValue 关键字检查返回值。

下图说明了我想要完成的任务。

enter image description here

这当然行不通,并打印:

DEBUG Result of Foo("1", false) = error CS0103: The name "$ReturnValue" does not exist in the current context.

虽然有几个可用的关键字,例如 $CALLER$TNAME,但我还没有找到任何可以产生返回值的关键字。

是否可以在单个断点操作中打印返回值?

最佳答案

您可以在方法调用之后放置断点并添加断点操作,如下所示:

static int Sum(int a, int b) => a + b;

static void Main(string[] args)
{
    int sum = Sum(1,2);
    {} // add breakpoint here
}

和操作代码:

Sum returned {x}.

它将在输出窗口中打印:

Sum returned 3.

或者

将断点放置在方法的返回部分(在本例中为 a + b)并添加类似

的操作
$FUNCTION result is {a + b}

输出将是:

MyApp.Program.Sum(int, int) result is 3

关于c# - 断点操作可以打印返回值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023636/

相关文章:

c# - 设置鼠标位置不起作用 c#

c# - winform应用程序的图标绘制工具有哪些?

c# - 从具有 View 和数据库的 Windows 8.1/Windows Phone 8.1 应用程序创建一个 dll

visual-studio - Microsoft Expression Studio 究竟是什么以及它如何与 Visual Studio 集成?

c# - LINQ to Objects - ICollection 属性到 CSV 的一般转换

c# - 让 Levenstein 的距离算法满足我的需要

c# - 简单的病毒清除器

c# - 记住所需页面的最佳方式

c++ - 将 GTest 集成到我的项目时 gtest-printers.h 出错

c# - 扩展方法的空目标