일부 입력에서 예상치 못한 결과를 나타내는 매우 복잡한 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. 디버깅은 제가하고 싶은 코드베이스가 사소한 payTax 예제보다 훨씬 크고 복잡하기 때문에 제가하고 싶은 마지막 일입니다.
도와주세요. 감사.
Visual Studio 2010이 설치되어 실행 중입니까? 그렇다면'payTax()'함수의 시작 부분에 중단 점을 놓은 다음 디버거에서 프로그램을 실행 해 보았습니까? –
예. 제가 말했듯이, 실제 기능은 고작 인 exmple보다 수천 배 더 복잡합니다. 디버거를 사용할 수는 있지만 그런 도구가있는 것보다 훨씬 많은 시간을 들여야합니다[email protected] Nissenbaum – Shuo
좋은 세부 정보가 없으면 좋은 답변을 제공하는 것이 까다 롭지 만 디버거는 단순한 기본 중단 점 및 단일 단계 이상의 기능을 수행합니다. 조건부 중단 점을 사용하여 주어진 사전 조건으로 실행이 예상치 못한 곳에서 끝날 때 추적 할 수 있습니다. 예를 들어, 브레이크 포인트는 주어진 입력 범위에서만 발생합니다. – JasonD