【问题标题】:Run boost unit tests under debugger在调试器下运行 boost 单元测试
【发布时间】:2014-01-28 09:34:15
【问题描述】:

我使用 VS 2010。

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

如何在调试器下运行这个exe?

更新

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

  1. Solution explorer中右键这个项目
  2. 点击"Set as StartUp project"
  3. 放一些断点

我个人不知道我需要将我的项目设置为启动。

【问题讨论】:

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


    【解决方案1】:

    更新

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

    1. Solution explorer这个项目上右击
    2. 点击"Set as StartUp project"
    3. 放一些断点

    我个人不知道我需要将我的项目设置为启动。

    【讨论】:

      【解决方案2】:

      您可以尝试通过多种方式调试您的测试套件,我建议您按照以下顺序进行处理:

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

      • 在(所有)测试的开始和结束大括号处设置断点,因为您的问题很可能与测试有关,而不是与框架和测试的设置有关。

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

      • 这很少需要,但您也可以使用 Debug + Windows + Breakpoints + New, Function 从第一个 main 显式开始。在 CRT 启动之前,可以在 Windows 上调用四种主要方法:mainCRTStartupwmainCRTStartupWinMainCRTStartupwWinMainCRTStartup.

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

      执行监视器提供有限的检测内存泄漏的能力 在程序执行期间,并在特定的程序上中断程序执行 内存分配顺序号(1 - 程序中的第一次内存分配, 2 - 秒等)。

      此外,检查如何run individual tests by name,如果您可以仅隔离测试的错误子集,通常会使调试更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 2023-01-09
        相关资源
        最近更新 更多