Tôi đang gỡ lỗi một hàm C++ rất phức tạp mang lại cho tôi một số kết quả không mong muốn trong một số đầu vào. Tôi muốn so sánh thực thi mã theo đầu vào khác nhau để tôi tìm ra phần nào gây ra lỗi cho tôi. Công cụ có thể so sánh đường dẫn thực thi mã là những gì tôi đang tìm kiếm. Vui lòng cho tôi biết nếu một công cụ như vậy tồn tại. Hoặc nếu không, nếu có một số kỹ thuật tôi có thể sử dụng để làm điều tương tự?So sánh các đường dẫn thực hiện của cùng một mã trong các đầu vào khác nhau
Để mô tả cụ thể vấn đề của tôi, ở đây tôi đang sử dụng một ví dụ giả tạo.
nói đây là các chức năng trong giả,
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();
}
Với đầu vào 15000, chức năng tính toán đúng số thuế, nhưng bằng cách nào đó đầu vào 16000 đưa ra một số thuế có sai sót. Giả sử, đầu vào 15000 và 16000 sẽ làm cho hàm đi qua chính xác các đường dẫn thực hiện tương tự; mặt khác, nếu chúng đi theo những con đường khác nhau, thì cái gì đó đã đi sai trong hàm. Do đó, một công cụ so sánh đường dẫn thực hiện sẽ tiết lộ đủ thông tin có thể giúp tôi nhanh chóng xác định lỗi. Tôi đang tìm một công cụ như vậy. Tốt hơn là tương thích với Visual Studio 2010. Nó sẽ là tốt hơn nếu như một công cụ cũng giữ giá trị của các biến.
P.S. gỡ lỗi là điều cuối cùng tôi muốn làm vì cơ sở mã mà tôi đang làm việc lớn hơn nhiều và phức tạp hơn ví dụ payTax tầm thường.
Vui lòng trợ giúp. Cảm ơn.
Bạn đã bật và chạy Visual Studio 2010 chưa? Nếu vậy, bạn đã thử đặt một điểm ngắt ở đầu hàm 'payTax()', và sau đó chạy chương trình trong trình gỡ rối? –
Có. Như tôi đã nói, hàm thực sự phức tạp hơn nghìn lần so với exmple. Tôi có thể sử dụng trình gỡ lỗi, nhưng tôi sẽ mất nhiều thời gian hơn nếu tôi có một công cụ như vậ[email protected] Nissenbaum – Shuo
Nếu không có đầy đủ chi tiết thì thật khó để đưa ra một câu trả lời hay, nhưng trình gỡ lỗi không làm nhiều hơn là các điểm ngắt cơ bản và bước đơn. Bạn có thể sử dụng các điểm ngắt có điều kiện để theo dõi khi thực hiện kết thúc ở một nơi không mong muốn với một điều kiện trước nhất định. Ví dụ của bạn, điểm ngắt chỉ có thể kích hoạt trên một dải đầu vào nhất định. – JasonD