8

我在 Visual Studio 2012/13 中调试 C++ x64 单元测试时遇到困难。

我的单元测试项目构建完美,适用于 Win32 和 x64,但是在调试测试时,符号被加载,但断点设置被完全跳过,程序永远不会暂停,就像你只是运行测试时发生的一样。

如果我为 Win32 构建单元测试项目,断点被命中,我可以像往常一样调试。

在 x64 中调试单元测试是否有任何特殊设置?属性是从项目的默认 Win32 设置中复制的,并且删除了所有特定于 Win32 的选项。这是配置单元测试项目的正确想法吗?

4

2 回答 2

2

您必须将测试运行器的默认处理器架构设置为 x64。您可以在测试 | 中找到它。测试设置 | 默认处理器架构 | x64。

您还可以在其中创建包含此设置的测试设置文件。

  • 将 XML 文件添加到 Visual Studio 解决方案并将其重命名,使其文件扩展名为 .runsettings。
  • 将文件内容替换为示例。
  • 根据您自己的需要对其进行编辑。
  • 在测试菜单上,选择测试设置,选择测试设置文件。

取自使用 .runsettings 文件配置单元测试

您想要更改TargetPlatform标志,如下所述。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
  </RunConfiguration>
  <!-- more stuff -->
</RunSettings>
于 2014-02-27T17:54:14.940 回答
0

在 Visual Studio 2017 下:

我不能说为什么 x86 下的行为会有所不同;但至少在 64 位 Windows 下,单元测试构建为由单独的测试执行运行器运行的 DLL 。您可以通过查看 Visual Studio 的Test菜单来看到这一点,在Settings您将看到一个引用它的菜单项。由于测试通常不通过 Visual Studio 运行,因此您设置的任何断点都无关紧要。

关键就在同一个Test菜单中:您会找到一个Debug子菜单,允许您调试“选定”或“所有”测试。如果您以这种方式运行测试,您的断点应该会在 Visual Studio 中命中。

于 2018-10-29T07:24:40.600 回答