在VS2010(VS2008)中調試C++ Boost.Test應用程序時,如何使調試器在Boost.Test斷言失敗點停止?Boost.Test應用程序調試
6
A
回答
2
我還沒有嘗試過這個,但理論上你想在check_impl function(在boost_unit_test_library源文件中)某處設置一個斷點,可能在其最後一個case語句的非PASS情況下。
在實踐中,我總是發現自己只是再次運行測試(或特定的問題測試,用--run_test = ...選擇)並在違規檢查上帶有斷點。
需要注意的是一個失敗BOOST_REQUIRE
導致拋出,因此,如果您啓用VS」突破上-C++ - 例外的是會很好(但不是BOOST_CHECK
S於那些打破調試選項,這只是返回並進行)。
1
我按照@timday的建議在check_impl()
中加入了斷點。
下面是升壓1.57.0,文件boost/test/impl/test_tool.ipp
,線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
}
+0
這似乎並沒有在提升1.63。 test_tool.ipp中的錯誤報告似乎發生在一個單獨的線程中,或者在最後,當所有測試已經被檢查時發生。我想停止何時發生斷言。 – CygnusX1 2017-07-14 08:12:40
0
assertion.hpp
模板類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. 調試Winforms應用程序
- 2. 調試Android應用程序
- 3. 調試Elixir應用程序
- 4. 調試Angular應用程序
- 5. 調試C#應用程序
- 6. 調試CQRS應用程序
- 7. 調試Haskell應用程序
- 8. 調試iphone應用程序
- 9. 調試Grails應用程序
- 10. PowerBuilder應用程序 - 調試
- 11. Red5應用程序調試
- 12. XAML應用程序調試
- 13. 調試c#應用程序
- 14. 調試Silverlight應用程序
- 15. 調試fastcgi應用程序
- 16. 調試Swing應用程序
- 17. 調試hadoop應用程序
- 18. Odoo調試應用程序
- 19. 調試EAR應用程序?
- 20. 記錄Boost.Test測試用例
- 21. 遠程調試Java應用程序
- 22. 遠程調試iOS應用程序
- 23. eclipse調試遠程web應用程序
- 24. 調試多線程應用程序
- 25. 遠程調試ASP.NET應用程序
- 26. 遠程調試ASP.Net應用程序
- 27. 遠程調試Web應用程序
- 28. 遠程調試ASP.NET Web應用程序
- 29. 遠程調試託管應用程序
- 30. 遠程調試 - Web應用程序Azure
謝謝。我還發現按照Boost.Test文檔的「Microsoft Visual Studio .NET用戶特定」一章中所述的過程很有用。它允許在驗證失敗的地方手動設置斷點。 – 2010-08-18 11:01:09