在调试器下运行boost单元测试

时间:2014-01-28 09:34:15

标签: visual-studio-2010 visual-studio debugging boost boost-test

我使用VS 2010.

我需要运行由.exe组成的BOOST_AUTO_TEST_SUITE来在调试器下测试我的库,因为我遇到内存访问冲突和内存泄漏。我没有主要功能,只有exe(以及.cpp文件)。

如何在调试器下运行此exe文件?

更新

如果你有一个包含多个项目的解决方案,并且你需要运行包含单元测试的1个项目,例如,在调试器下,你需要:

  1. Solution explorer
  2. 中右键单击此项目
  3. 点击"Set as StartUp project"
  4. 提出一些断点
  5. Personaly我不知道我需要将我的项目设置为启动。

2 个答案:

答案 0 :(得分:0)

您可以尝试调试测试套件,这是我建议您解决此问题的顺序:

  • 设置BOOST_TEST_CATCH_SYSTEM_ERRORS环境变量以获得更好的故障堆栈跟踪。

  • 在(所有)测试的开始和结束时设置断点,因为您的问题更可能与测试有关,而不是框架和测试的设置。< / p>

  • 在Visual Studio中打开boost/test/impl/unit_test_main.ipp包含文件,并在unit_test_main方法中设置断点。您将逐步完成测试执行监视器,但这很少提供更多的洞察力,而不仅仅是简单地查看测试本身。

  • 这很少需要,但您也可以使用Debug + Windows + Breakpoints + New,Function在第一个主页上显式启动。在CRT启动之前,可以在Windows上调用四种主要方法: mainCRTStartup wmainCRTStartup WinMainCRTStartup wWinMainCRTStartup

  • 对于内存泄漏,请确保使用带有订单分配ID的--detect-memory-leak开关:

    The Execution Monitor provides a limited ability to detect memory leaks
    during program execution, and to break program execution on specific
    memory allocation order number (1 - first allocation of memory in program,
    2 - second and so on).

此外,检查如何run individual tests by name,如果你只能隔离测试的错误子集,它通常会使调试更容易。

答案 1 :(得分:0)

<强>更新

如果你有一个包含多个项目的解决方案,并且你需要运行包含单元测试的1个项目,例如,在调试器下,你需要:

  1. Solution explorer
  2. 中右键单击此项目
  3. 点击"Set as StartUp project"
  4. 提出一些断点
  5. Personaly我不知道我需要将我的项目设置为启动。