在Visual Studio中调试x64单元测试

8
我在Visual Studio 2012/13中调试C++ x64单元测试时遇到了困难。
我的单元测试项目可以完美构建,包括Win32和x64,但是在调试测试时,符号被加载,但设置的断点完全被跳过,程序从未暂停,就像只运行测试一样。
如果我为Win32构建单元测试项目,则会触发断点,并且我可以像往常一样进行调试。
在x64中调试单元测试是否有特殊设置?属性是从项目的默认Win32设置复制的,并且删除了所有Win32特定选项。这是否是配置单元测试项目的正确方法?

也许这对你有帮助:http://stackoverflow.com/questions/17317601/debugging-x64-application-c-using-visual-studio-2012 - David Brabant
@DavidBrabant 感谢您的建议,但是Win32和x64版本的调试信息已经生成了。 - Steve
1
我刚刚解决了同样的问题。看起来项目设置中的“调试”->“命令”值在某种程度上很重要。我刚刚删除了“UnitTests.vcxproj.user”,然后就能够调试测试了。 - Michael Nastenko
2个回答

2
您需要将测试运行器的默认处理器架构设置为x64。您可以在“测试 | 测试设置 | 默认处理器架构 | x64”中找到此设置。
您还可以创建一个包含此设置的测试设置文件。
  • 向Visual Studio解决方案添加一个XML文件,并将其重命名,使其文件扩展名为.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>

这对我来说并没有解决同样的问题。无论如何,我正在使用C#和Visual Studio与xunit。 - LightCC

0

在 Visual Studio 2017 下:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接