![](/img/trans.png)
[英]debugging in mixed mode with native C++, managed c++ cli, and c# solution
[英]Enabling “Native Code Debugging” in C++/CLI/C# project crashes application
我在Visual Studio 2019中有一个项目,正在其中创建C库的C#接口。 当使用默认调试设置运行时,一切正常,但是当我将STL变量(std :: vector,std :: string等)添加到监视列表时,我在监视列表中收到一条错误消息,提示我需要启用混合模式。 谷歌搜索后,我找到了执行此操作的过程,但是这次它使程序崩溃,并显示“未加载WNTDLL.pdb”。 启用混合模式但禁用“启用本机代码调试”可以解决此问题,但我仍然看不到STL容器。
为了避免崩溃,我还需要更改其他设置吗? 我究竟做错了什么?
我尝试了其他一些设置,例如“ Just my code”,但这没什么不同。 安装Visual Studio 2019时出现一个问题,我无法在C ++中运行“ Hello World”默认项目。 我首先通过在Python中创建了相同的hello世界来解决此问题,该世界以某种方式修复了C ++调试器。 这可能是损坏的调试器吗?
显然,我希望程序不会崩溃,而是让我能够像在普通C ++应用程序中一样进入内部变量和stl容器。
您应该首先将设置恢复为收到错误的状态:
WNTDLL.pdb未加载
现在,这是什么意思? 这意味着您没有调试信息,特别是要调试的dll的程序数据库文件(.pdb),或者该文件已损坏。
因此,您需要确保正确加载符号。 对于WNTDLL,需要确保您可以使用Microsoft Symbols Server,并且已在符号路径设置(“ Debug > Options > Symbols
)中启用了它。 有关更多信息,您也可以查看此问题 。
编辑:详细说明您的问题中的其余部分:
设置“ Enable native code debugging
”完全按照其说明进行操作。 在您的情况下,您要启用它,否则您将无法调试本机库(请参见此处 )。 禁用选项的混合模式基本上只是托管代码。
如Just my code
所说,设置Just my code
再一次执行。 它会自动跳过对非用户代码的调用 。 在您的情况下,您希望禁用它,因为WNTDLL不是您的代码。 调试时,您可以在模块窗口中看到对不同模块的识别。
关于“ Hello World”遇到的问题,我什么也不能说,但可以肯定的是,.pdb问题肯定是我在上面解释过的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.