在Visual Studio 2010调试器中修改托管代码的方法返回值

时间:2010-09-15 15:00:00

标签: c# visual-studio debugging visual-studio-2010 managed

说我有这个C#方法:

public bool GetVal()
{
    return a1 == b1 || c1 == d1 || GetE1() == GetF1(); // Illustrating complicated logic here..
}

我不想在上面的语句中修改变量/返回值的内容,但是想要将false返回给调用GetVal()的方法。

是否可以使用VS2010调试器以某种方式修改返回值,就像我可以动态修改变量值一样?也许以某种方式修改调用堆栈?

5 个答案:

答案 0 :(得分:1)

无法以这种方式直接修改返回值。与C ++相比,托管代码对于查看函数调用的返回值非常有限/不支持。

但你可以做的是去调用网站并修改赋值函数的变量。

答案 1 :(得分:0)

public bool GetVal()
{
    bool retval = a1 == b1 || c1 == d1 || GetE1() == GetF1();
// edit retval to be 'false' in the debugger now
    return retval;
}

答案 2 :(得分:0)

我经常发现自己需要相同的东西,不幸的是,唯一的方法是创建一个临时变量,您可以在函数返回之前通过Locals或Watch窗口进行更改。

public bool GetVal()
{
    bool b = a1 == b1 || c1 == d1 || GetE1() == GetF1();
    return b;//Set breakpoint here
}

答案 3 :(得分:0)

public bool GetVal()
{
    var result = a1 == b1 || c1 == d1 || GetE1() == GetF1(); // Illustrating complicated logic here..
    return result;
}

在返回行上设置断点并修改结果变量。

答案 4 :(得分:0)

正如其他答案所指出的那样:

public bool GetVal()
{
    bool result = a1 == b1 || c1 == d1 || GetE1() == GetF1();
    return result;
}

完美无缺。但是,一般来说,将大量if语句串起来的代码总是难以阅读和调试。

您应该将功能分解为步骤而不是让它在一行中执行所有步骤。

完成任务的另一种方法是在代码中设置一个断点if(GetVal())并简单地从那里修改执行路径,而不是试图修改返回值,只需修改事务的状态。值使用