如何从.NET核心C#项目中调试并进入本机代码项目?

时间:2016-11-01 07:27:31

标签: c# pinvoke .net-core

我正在VS2015中开发.NET核心(.NET Standard 1.6)应用程序。应用程序通过P / Invoke调用C ++代码。现在我需要进入我原生dll项目的C / C ++代码。

在常规.NET应用程序中,通过在应用程序的属性窗口中启用非托管代码调试,我们可以直接进入C / C ++代码:

step into the C/C++ code

但我无法在.NET核心项目中找到这样的选项。我知道我可以将调试器附加到应用程序以仅调试本机代码 ,但这不适合我的情况。

同样,我想从托管C#代码调试到本机C / C ++代码。

有什么想法吗?

也许我应该切换回.NET Framework,以便我可以调试本机代码。 printf调试真的很难。 :(

1 个答案:

答案 0 :(得分:1)

<强>更新
已经实现了混合模式调试,即从托管C#代码到本机C / C ++代码的调试。请参阅Tutorial: Debug managed and native code in Visual Studio

<强>更新
该功能可能已经实施,请参阅this

正如@cynic所说,现在还没有支持( 2016-11-1 )。

可以通过以下cynic提供的步骤进行验证。

  1. 暂停程序(例如Console.ReadKey)。
  2. 选择“托管(CoreCLR)”和“本机”代码类型附加到dotnet.exe进程
  3. 您将收到一个消息框,明确声明“不支持Interop调试”。
  4. Not supported.

    这是调试本机dll的a proper way

      
        
    1. 右键单击解决方案,添加现有项目
    2.   
    3. 打开'dotnet.exe'。这通常安装在'C:\ Program Files \ dotnet \ dotnet.exe'。
    4.   
    5. 您现在应该在解决方案资源管理器中看到dotnet.exe的另一个节点。右键单击它以显示项目属性:
    6.   
    7. 将工作目录更改为您想要的
    8.   
    9. 将参数更改为内置dll的路径
    10.   
    11. 将exe项目更改为启动项目
    12.         

      推荐:转到工具 - &gt;选项 - &gt;项目和解决方案 - &gt;构建并运行,取消选中“仅在运行时构建启动项目和依赖”