我正在调试一个非常复杂的 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 兼容。如果这样的工具还保留变量的值会更好。
PS 调试是我最不想做的事情,因为我正在使用的代码库比简单的 payTax 示例要大得多且复杂得多。
请帮忙。谢谢。