我在 Visual Studio 2013 测试框架中有一个 C# 单元测试,它练习 CLI 和本机代码。我想在执行 C# 单元测试时研究代码的本机部分。但是,运行“测试”->“调试”->“所有测试”会运行托管调试器,因此不会命中本机代码中的断点,并且我无法像在混合模式调试器下运行程序时那样从 C# -> C++/CLI 代码进行跟踪。
例如,我的单元测试中的这段代码:
[TestMethod]
public void TestRoundTripEvaluate()
{
var obj = new MyCLIObject();
var roundtripped = RoundtripXml( obj );
// I would like to trace into here to see why Equals returns false.
// But the definition for MyCLIObject is in a CPP file and cannot be navigated
// to running the unit test because Visual Studio starts the debugger as "managed only"
// when using Test -> Debug -> All Tests
Assert.IsTrue( obj.Equals( roundtripped ) );
}
查看单元测试项目的项目设置,“调试”下的所有内容都被禁用,因此我无法选中“启用本机代码调试”,该选项允许正常程序执行此行为。
运行 VS C# 单元测试时如何启用混合模式调试或仅本机调试?
- 进入属性页面对于您的单元测试项目(在解决方案资源管理器中右键单击项目,然后单击“属性”)
- 转到“调试”选项卡(左侧列表中从顶部数第四个)
- 启用复选框“启用本机代码调试”
- 调试单元测试 - 您可以在本机或托管代码中设置断点,并且可以单步执行任一类型的代码。
我刚刚遇到了与您相同的问题,并且能够使用这些步骤使其工作。在启用此复选框之前,它不起作用。
作为记录,我使用的是 VS2013 update 4。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)