在VS2008中进行调试时,如何在函数末尾发现返回值?

时间:2020-03-06 15:03:18  来源:igfitidea点击:

使用Cin Visual Studio 2008并在调试器中逐步完成一个函数,我到达了函数的结尾,并且位于最后一个花括号}上并即将返回。有没有办法找出该函数将要返回的值?

如果返回值的计算如下,则这是必需的:

return (x.Func() > y.Func());

解决方案

你可以放

(x.Func() > y.Func())

在观察窗口中对其进行评估,然后查看结果。除非声明是

return ValueChangesAfterEveryCall();

你应该没事的。

这是一个较低的级别,但是如果我们切换到反汇编,则可以单步执行说明,并查看将返回值设置为什么。通常在@eax寄存器中设置。

如果我们不想单步执行,可以在ret指令上放置一个断点,并在该点检查寄存器。

我仍将VS 2003与C ++一起使用,因此这可能适用,也可能不适用。如果使用"自动"选项卡(在"本地"和"监视"选项卡附近),则返回后它将告诉我们函数的返回值。

我实际上建议重构代码,以将单个函数的返回值放在局部变量中。这样一来,我们和其他人在调试代码以找出特定评估时就不必再费周折了。通常,这会产生易于调试的代码,因此,其他人也更容易理解和维护。

int sumOfSomething = x.Func();
int pendingSomethings = y.Func();
return (sumOfSomething > pendingSomethings);