比较不同输入下相同代码的执行路径

Shu*_*huo 6 c++ execution

我正在调试一个非常复杂的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();
}
Run Code Online (Sandbox Code Playgroud)

给定输入15000,该函数计算正确的税额,但不知何故输入16000给出错误的税额.据推测,输入15000和16000会导致函数完全执行相同的执行路径; 另一方面,如果它们走的是不同的路径,那么功能中的某些东西一定出错了.因此,比较执行路径的工具会显示足够的信息,可以帮助我快速识别错误.我正在寻找这样一个工具.最好与Visual Studio 2010兼容.如果这样的工具还保留变量值,那就更好了.

PS调试是我想要做的最后一件事,因为我正在使用的代码库比简单的payTax示例更大更复杂.

请帮忙.谢谢.

Yak*_*ont 3

您要查找的关键字是“代码覆盖率”或“覆盖率分析”或“代码覆盖率分析”。

您使用哪种工具自然取决于您环境的其他部分。