我在Visual Studio 2012/13中调试C ++ x64单元测试时遇到了困难。
对于Win32和x64,我的单元测试项目构建完美,但是在调试测试时,符号被加载但是断点设置被完全跳过,程序永远不会暂停,就像你刚刚运行测试时会发生的那样。 / p>
如果我为Win32构建单元测试项目,则会出现断点,我可以像往常一样进行调试。
在x64中调试单元测试是否有任何特殊设置?从项目的默认Win32设置复制属性,并删除所有特定于win32的选项。这是配置单元测试项目的正确理念吗?
答案 0 :(得分:1)
您必须将Test runner的默认处理器架构设置为x64。你可以在Test |中找到它测试设置|默认处理器架构| 64。
您还可以使用此设置创建测试设置文件。
取自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)
我无法说出为什么x86下的行为有所不同;但至少在64位Windows下,单元测试会以DLL的形式构建,并由由单独的测试执行运行程序运行。您可以通过在Visual Studio的Test
菜单中查看,在Settings
下看到一个引用它的菜单项。由于测试通常不是通过Visual Studio运行的,因此您设置的任何断点都是不相关的。
该键位于同一Test
菜单中:您将找到一个Debug
子菜单,从而可以调试“选定”或“所有”测试。如果以这种方式运行测试,则断点应在Visual Studio中命中。