gpt4 book ai didi

c# - 在 Visual Studio 2013 中对托管单元测试使用混合模式调试

转载 作者:可可西里 更新时间:2023-11-01 03:01:15 27 4
gpt4 key购买 nike

我在 Visual Studio 2013 测试框架中有一个 C# 单元测试,该测试框架使用 CLI 和 native 代码。我想在执行 C# 单元测试时调查代码的 native 部分。但是,运行测试 -> 调试 -> 所有测试运行托管调试器,因此不会命中 native 代码中的断点,并且我无法像在混合模式调试器下运行程序时那样从 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 ) );
}

查看单元测试项目的项目设置,Debug 下的所有内容都被禁用,因此我无法选中 Enable Native Code Debugging,它允许正常程序的此行为。

如何在运行 VS C# 单元测试时启用混合模式调试或仅 native 调试?

最佳答案

  1. 转到单元测试项目的属性页(在解决方案资源管理器中右键单击项目,然后单击“属性”)
  2. 转到“调试”选项卡(左侧列表中从顶部数第 4 个)
  3. 启用复选框“启用 native 代码调试”
  4. 调试单元测试 - 您可以在 native 代码或托管代码中设置断点,并且可以单步执行任何一种代码。

我刚刚遇到了与您相同的问题,并且能够使用这些步骤使其正常工作。在启用此复选框之前,它不起作用。作为记录,我使用的是 VS2013 更新 4。

enter image description here

关于c# - 在 Visual Studio 2013 中对托管单元测试使用混合模式调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27650484/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com