在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);