Lors du débogage d'une application C++ Boost.Test dans VS2010 (VS2008), comment faire pour que le débogueur s'arrête à Boost.Test points d'échec d'assertion?Débogage de l'application Boost.Test
Répondre
Je n'ai pas essayé cela moi-même, mais en théorie vous voudriez mettre un point d'arrêt quelque part dans le check_impl function (dans la source boost_unit_test_library), probablement dans les cas non-PASS de son instruction case finale.
En pratique, je me retrouve toujours à recommencer les tests (ou le test de problème spécifique, sélectionné avec --run_test = ...) avec un point d'arrêt sur la vérification incriminée.
Notez qu'un défaut BOOST_REQUIRE
résultats dans un jet, donc si vous activez rupture sur C « VS ++ - exceptions dans les options de débogage qui ne marchera pas sur les bien (mais pas BOOST_CHECK
s, qui reviennent juste et continuez).
J'ai mis des points d'arrêt dans check_impl()
, comme suggéré par @timday.
Voici un extrait de Boost 1.57.0, fichier boost/test/impl/test_tool.ipp
, lignes 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
}
Cela ne semble pas fonctionner en boost 1.63. La déclaration d'erreurs dans test_tool.ipp semble se produire dans un thread séparé, ou en quelque sorte à la fin, lorsque tous les tests ont déjà été vérifiés. Je voudrais arrêter quand l'assertion se produit à la place. – CygnusX1
assertion.hpp
classe modèle 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. fonction Test avec BOOST.Test
- 2. Pour commencer à utiliser Boost.Test
- 3. Comment comparer des vecteurs avec Boost.Test?
- 4. Comment traiter la sortie Boost.Test avec Eclipse
- 5. Comment les luminaires globaux fonctionnent-ils dans BOOST.Test?
- 6. Comment utiliser Boost.Test dans un projet basé sur CMake?
- 7. Débogage de débogage Eclipse C++ dans STL
- 8. Débogage Débogage/Distribution dans Xcode
- 9. Macro de débogage C (avec différentes "sources" de débogage)
- 10. Problèmes de débogage
- 11. Techniques de débogage multitraitement
- 12. Débogage de sqlite
- 13. VB.NET Erreur de débogage
- 14. Erreur de débogage multitraitement
- 15. Débogage de NSCollectionViews imbriqués
- 16. Astuces de débogage Android
- 17. Sortie de débogage Android.mk
- 18. Débogage de l'exception StackOverFlow
- 19. Journal de débogage .NET
- 20. Macros de débogage Win32
- 21. Débogage de l'instantané d'objet
- 22. Sonde de débogage Java
- 23. Métaprogrammes de débogage
- 24. erreur Django de débogage
- 25. Logiciel de débogage PHP?
- 26. Débogage avancé de System.Transactions
- 27. Django: débogage de templatetags
- 28. Exceptions de débogage
- 29. Problème de débogage Xcode
- 30. Débogage de WCF REST
Merci. J'ai également trouvé utile de suivre la procédure décrite dans le chapitre "Microsoft Visual Studio .NET spécifique aux utilisateurs" de la documentation de Boost.Test. Il permet de définir manuellement un point d'arrêt à l'endroit où une vérification échoue. –