Beim Debuggen einer C++ Boost.Test-Anwendung in VS2010 (VS2008), wie der Debugger bei Boost.Test Assertion Fehlerpunkte stoppen?Boost.Test Anwendung Debugging
Antwort
Ich habe das selbst nicht versucht, aber in der Theorie würden Sie einen Haltepunkt irgendwo in der check_impl function (in der boost_unit_test_library Quelle) wahrscheinlich in den Nicht-Pass-Fällen seiner endgültigen Fallanweisung setzen.
In der Praxis finde ich immer nur die Tests (oder den spezifischen Problemtest, ausgewählt mit --run_test = ...) mit einem Haltepunkt auf der fehlerhaften Prüfung.
Hinweis, dass ein Fehler BOOST_REQUIRE
Ergebnisse in einem Wurf, also wenn Sie ermöglichen VS‘Break-on-C++ - Ausnahmen in den Debugging-Optionen, die gut auf diejenigen brechen werden (aber nicht BOOST_CHECK
s, die gerade zurückkommen und tragen).
Ich setze Haltepunkte in check_impl()
, wie von @timday vorgeschlagen. Hier
ist ein Auszug aus Boost-1.57.0, Datei boost/test/impl/test_tool.ipp
, Zeilen 355-373:
switch(tl) {
case PASS:
framework::assertion_result(true);
return true;
case WARN:
return false; // ADD BREAKPOINT HERE
case CHECK:
framework::assertion_result(false);
return false; // ADD BREAKPOINT HERE
case REQUIRE:
framework::assertion_result(false);
framework::test_unit_aborted(framework::current_test_case());
throw execution_aborted(); // ADD BREAKPOINT HERE
}
Dies scheint in Boost 1.63 nicht zu funktionieren. Das Melden von Fehlern in test_tool.ipp scheint in einem separaten Thread zu erfolgen, oder irgendwie am Ende, wenn alle Tests bereits überprüft wurden. Ich möchte anhalten, wenn die Assertion stattdessen auftritt. – CygnusX1
assertion.hpp
Template-Klasse binary_expr:
assertion_result evaluate(bool no_message = false) const
{
assertion_result const expr_res(value());
if(no_message || expr_res)
return expr_res; <<<<<<<< SUCCESS
BRK wrap_stringstream buff;
report(buff.stream());
return tt_detail::format_assertion_result(buff.stream().str(), expr_res.message());
}
- 1. Testing-Funktion mit BOOST.Test
- 2. Boost.Test show Testdauer
- 3. boost.test vs. CppUnit
- 4. Bluestacks Cordova Anwendung Chrome Debugging
- 5. Boost.Test auf 64-Bit-Windows
- 6. Legacy VB 6 Remote-Debugging-Desktop-Anwendung
- 7. Problem mit Debugging-Anwendung Ausgabe in Gdb
- 8. Remote-Debugging einer Jnlp-Anwendung mit Eklipse
- 9. Verwendung von Jenkins mit boost.test Komponententests
- 10. Problem mit boost.test mit alter Version
- 11. Wie vergleicht man Dateien mit Boost.Test?
- 12. Wie vergleicht man Vektoren mit Boost.Test?
- 13. Hilfe bei der Verwendung von Boost.Test
- 14. Anwendung Debugging ist in Visual Studio 2012 auf Classic ASP Debugging deaktiviert
- 15. Debugging-Tools für die Leistung von Web-Anwendung
- 16. Cross-Debugging Windows-Anwendung auf Linux-Box in Eclipse CDT
- 17. gdb eine Datei erstellen, wenn die Anwendung unter Debugging abstürzt
- 18. asp.net Kern scheint zu frieren, wenn Debugging-Anwendung
- 19. Schlanke Anwendung mit 500 Fehler trotz Enable Debugging
- 20. Debugging Windows Store-Anwendung auf dem lokalen Computer
- 21. Visual Studio Remote-Debugging beim Start der Anwendung
- 22. Debugging Multithread-C++ - Anwendung mit großen Thread-Pool
- 23. Debugging/Ausführen von Aspnet5-Anwendung in IIS über VS2015
- 24. Einfache Anwendung Protokollierung/Debugging mit Nginx, uwsgi, Kolben?
- 25. Debugging Intents
- 26. Remote-Debugging in VB6
- 27. Java Remote-Debugging-Overhead
- 28. JBoss-Debugging in Eclipse
- 29. Eclipse + Maven + Tomcat Debugging
- 30. Visual Studio 2008 Debugging
Danke. Ich fand es auch nützlich, das im Kapitel "Microsoft Visual Studio .NET-Benutzer" der Boost.Test-Dokumentation beschriebene Verfahren zu befolgen. Es ermöglicht, manuell einen Haltepunkt an der Stelle zu setzen, an der eine Überprüfung fehlschlägt. –