我正在调试一个非常复杂的C++函数,它在某些输入下给我一些意想不到的结果。我想比较不同输入下的代码执行情况,以便找出导致我错误的部分。 工具可以比较代码执行路径是我正在寻找的。请让我知道这样的工具是否存在。否则,如果有一些技巧我可以用来做同样的事情?比较不同输入下相同代码的执行路径
为了具体描述我的问题,在这里我使用了一个人为的例子。
说这是伪功能,
double payTax(double income)
{
if (income < 10000)
return noTax();
else if (10000 < income < 30000)
return levelOneTax();
else if (30000 < income < 48000)
return levelTwoTax();
else
return levelThreeAboveTax();
}
给定的输入15000,该函数计算的税收正确的金额,但不知何故,输入16000给出了一个错误的税额。据推测,输入15000和16000会导致函数执行完全相同的执行路径;另一方面,如果他们走上不同的道路,那么在功能内部肯定出了问题。因此,一个比较执行路径的工具将显示足够的信息,可以帮助我快速识别错误。我正在寻找这样的工具。最好与Visual Studio 2010兼容。如果这样的工具还保留变量的值,会更好。
P.S.调试是我想要做的最后一件事,因为我使用的代码库比繁琐的payTax示例更大更复杂。
请帮助。谢谢。
您是否已经启动并运行了Visual Studio 2010?如果是的话,你有没有尝试在函数'payTax()'的开头放置一个断点,然后在调试器中运行程序? –
是的。正如我所说的,真正的功能比设计的实例要复杂上千倍。我可以使用调试器,但如果我有这样一个工具,它会花费我更多的时间。@Dan Nissenbaum – Shuo
如果没有完整的细节,给出一个很好的答案是非常棘手的,但是调试器不仅仅是基本的断点和单步执行。您可以使用条件断点来追踪执行何时以给定的前提条件结束于意外的地方。对于你的例子,断点只能在给定的输入范围内触发。 – JasonD