繁体   English   中英

在C ++ / CLI / C#项目中启用“本机代码调试”会使应用程序崩溃

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM