在Visual Studio中调试x64单元测试

时间:2013-09-09 12:22:03

标签: c++ visual-studio unit-testing 64-bit visual-studio-2013

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

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

如果我为Win32构建单元测试项目,则会出现断点,我可以像往常一样进行调试。

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

2 个答案:

答案 0 :(得分:1)

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

您还可以使用此设置创建测试设置文件。

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

取自Configuring Unit Tests by using a .runsettings File

您想要更改TargetPlatform标记,如下所示。

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>.\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
  </RunConfiguration>
  <!-- more stuff -->
</RunSettings>

答案 1 :(得分:0)

在Visual Studio 2017中:

我无法说出为什么x86下的行为有所不同;但至少在64位Windows下,单元测试会以DLL的形式构建,并由由单独的测试执行运行程序运行。您可以通过在Visual Studio的Test菜单中查看,在Settings下看到一个引用它的菜单项。由于测试通常不是通过Visual Studio运行的,因此您设置的任何断点都是不相关的。

该键位于同一Test菜单中:您将找到一个Debug子菜单,从而可以调试“选定”或“所有”测试。如果以这种方式运行测试,则断点应在Visual Studio中命中。