非常に複雑な 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 と互換性があります。そのようなツールで変数の値も保持できるとよいでしょう。
私が取り組んでいるコード ベースは、単純な payTax の例よりもはるかに大きく複雑であるため、PS のデバッグは私がやりたい最後のことです。
助けてください。ありがとう。