Boost.Test: 如何自动附加调试器(GDB)?
Boost.Test: How to automatically attach debugger (GDB)?
在为项目执行 Boost 测试时,我看到
Test command: ...
Environment variables:
BOOST_TEST_AUTO_START_DBG=yes
BOOST_TEST_BUILD_INFO=yes
BOOST_TEST_CATCH_SYSTEM_ERRORS=yes
BOOST_TEST_COLOR_OUTPUT=yes
BOOST_TEST_DETECT_FP_EXCEPTIONS=yes
BOOST_TEST_LOG_FORMAT=HRF
BOOST_TEST_LOG_LEVEL=test_suite
BOOST_TEST_LOG_SINK=stdout
BOOST_TEST_RANDOM=1
BOOST_TEST_REPORT_FORMAT=XML
BOOST_TEST_REPORT_LEVEL=detailed
BOOST_TEST_REPORT_SINK=...
BOOST_TEST_RESULT_CODE=yes
...
确认 auto_start_dbg
选项设置正确。然后,例如,发生以下故障:
unknown location(0): fatal error: in "...": boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::ios_base::failure[abi:cxx11]> >: failed opening file: No such file or directory: iostream error
我本希望自动跳入交互式调试器实例(在本例中为 GDB),捕获此异常。
是我的期望有误还是我配置有误?你如何使用这个选项?
Are my expectations wrong or is there a misconfiguration on my side? How do you use this option?
你的期望是错误的。此选项仅与信号有关。尝试取消引用 NULL 指针,您会看到 gdb 自动启动。
编辑 (2017/02/21)
我刚刚想到了一个更好的例子。使用 assert
。使用起来方便多了。它会引发 SIGABRT
.
在为项目执行 Boost 测试时,我看到
Test command: ...
Environment variables:
BOOST_TEST_AUTO_START_DBG=yes
BOOST_TEST_BUILD_INFO=yes
BOOST_TEST_CATCH_SYSTEM_ERRORS=yes
BOOST_TEST_COLOR_OUTPUT=yes
BOOST_TEST_DETECT_FP_EXCEPTIONS=yes
BOOST_TEST_LOG_FORMAT=HRF
BOOST_TEST_LOG_LEVEL=test_suite
BOOST_TEST_LOG_SINK=stdout
BOOST_TEST_RANDOM=1
BOOST_TEST_REPORT_FORMAT=XML
BOOST_TEST_REPORT_LEVEL=detailed
BOOST_TEST_REPORT_SINK=...
BOOST_TEST_RESULT_CODE=yes
...
确认 auto_start_dbg
选项设置正确。然后,例如,发生以下故障:
unknown location(0): fatal error: in "...": boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::ios_base::failure[abi:cxx11]> >: failed opening file: No such file or directory: iostream error
我本希望自动跳入交互式调试器实例(在本例中为 GDB),捕获此异常。
是我的期望有误还是我配置有误?你如何使用这个选项?
Are my expectations wrong or is there a misconfiguration on my side? How do you use this option?
你的期望是错误的。此选项仅与信号有关。尝试取消引用 NULL 指针,您会看到 gdb 自动启动。
编辑 (2017/02/21)
我刚刚想到了一个更好的例子。使用 assert
。使用起来方便多了。它会引发 SIGABRT
.