如何步入非托管C++库从我的C++/CLI代码

问题描述:

,我有以下三个项目在我的解决方案: 1. C#库 2. C++/CLI托管代码 3. C++非托管代码如何步入非托管C++库从我的C++/CLI代码

我在我的C#项目中检查了“启用非托管代码调试”,并在Debug/Win32中构建了两个C++项目。但是,我无法进入非托管代码 - 当我在任何非托管方法调用F11时,它会显示一些随机/错误的代码,然后退出。

因为我的单元测试通过,我知道我的非托管代码执行。

我错过了什么?

+1

你有没有你试图介入的非托管代码的.pdb文件? –

+0

您可以尝试启动托管进程并暂停(通过任何方式),在您的非托管项目中放置断点并选择“调试 - >附加进程”,选择托管进程并继续托管进程。 – Philipp

+0

@Steven:是的,我确实看到vc90.pdb –

当我有这个问题,它来自于这些东西:

1)启用非托管代码调试未选中。你已经解决了这个问题

2)构建的EXE为x64或任何CPU(他们说x64的作品,但它没有)。我想你已经解决了这个问题。

3)“只要我的代码”正在上有时会发生与非托管代码调试(工具,选项,调试器,仅我的代码)

4)不正确的调试选项在C麻烦变成++项目设置

5)丢失,损坏或不匹配的PDB文件。您可以通过尝试在调试器中运行时在C++代码中设置断点来检查此问题。如果断点变成空心圆圈,则调试信息有问题。当你在调试模式下运行时,还要检查你的输出窗口 - 它应该告诉你哪些符号被加载。

+0

为我工作,谢谢! –

+2

@Arne,其中的5人工作? –

+0

对我来说,我认为“只是我的代码”可能是问题的一部分。 –

我已经看到这个问题时不时地(即从本地C++到C++/CLI)进行“其他”的方式,它通常是由调试器没有真正意识到它应该调试本机和托管代码。

通常对于我来说,将配置属性 - >启动项目中的调试器类型从'Auto'设置为'Mixed'可以解决这个问题。

+0

我从'自动'切换到'混合',这并没有帮助我。 –

+0

我也没有。我的断点受到了打击,但我没有获得关于“本地”或“观察”窗口中的任何变量的信息,等等。 –

+0

我也看到了这一点。如果我只是F5调试或附加到C#EXE,VS不想加载混合调试器。每次我调试我需要指定我想要本地和.NET调试器。 –