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

启用“;“本机代码调试”;在C++/CLI/C#项目崩溃应用程序,c#,c++,command-line-interface,C#,C++,Command Line Interface,我在Visual Studio 2019中有一个项目,我正在创建一个C库的C#接口。 当我使用默认调试设置运行时,一切正常,但是当我向监视列表添加STL变量(std::vector、std::string等)时,监视列表中会显示一条错误消息,表示需要启用混合模式。 在谷歌搜索之后,我找到了这样做的程序,但这次它用“WNTDLL.pdb未加载”使程序崩溃。保持混合模式处于活动状态,但禁用“启用本机代码调试”可以解决问题,但我仍然无法看到STL容器 在设置中是否还有其他需要更改的内容以避免此崩溃?我

我在Visual Studio 2019中有一个项目,我正在创建一个C库的C#接口。 当我使用默认调试设置运行时,一切正常,但是当我向监视列表添加STL变量(std::vector、std::string等)时,监视列表中会显示一条错误消息,表示需要启用混合模式。 在谷歌搜索之后,我找到了这样做的程序,但这次它用“WNTDLL.pdb未加载”使程序崩溃。保持混合模式处于活动状态,但禁用“启用本机代码调试”可以解决问题,但我仍然无法看到STL容器

在设置中是否还有其他需要更改的内容以避免此崩溃?我做错了什么

我尝试过其他一些设置,比如“仅我的代码”,但这并没有什么不同。 当安装VisualStudio 2019时,出现了一个问题:在C++中,我不能运行“hello World”默认项目。我通过在Python中创建同一个Hello World来修复这个问题,它在某种程度上修复了C++调试器。这可能是一个损坏的调试器吗


显然,我希望程序不会崩溃,而是让我在VAILE和STL容器中像在普通C++应用程序中一样高峰期。

< P>你应该先将你的设置恢复到你得到错误的状态:

Wntdell.pdb未加载

这是什么意思?这意味着您没有调试信息,特别是要调试的dll的文件(.pdb),或者该文件已损坏

因此,您需要确保符号已正确加载。对于WntDell,您需要确保Microsoft Symbols服务器对您可用,并且在符号路径设置中启用了它(
Debug>Options>Symbols
)。更多信息,你也可以看看这个

编辑:要详细说明问题中的其余部分:

设置
启用本机代码调试
完全按照它所说的那样执行。在您的情况下,您希望启用它,否则您将无法调试本机库(请参阅)。禁用选项的混合模式基本上只是托管代码

设置
仅我的代码
再次按它所说的那样执行。信息技术在您的情况下,您希望禁用它,因为WNTDLL不是您的代码。您可以在调试时在中看到对不同模块的识别


关于您在“Hello World”中遇到的问题,我不能说什么,但我可以说.pdb问题肯定就是我上面解释的问题。

这确实起了作用。现在我仍然得到一个抛出的异常,但它是NTDLL.dll访问冲突写入位置0x0000000@TomRoyle太好了,现在可以调试了。我对NTDLL的了解并不多,尽管我发现有一个。建议防病毒软件干扰C++调试会话。所以,一个变通的办法就是停用它。我害怕你这么说。我根本无法禁用我的防病毒软件。我会试着用我的票打开一张票Support@TomRoyle在我评论的链接中还有一些其他的解决方案,所以你可以尝试这些,自己研究或者问另一个问题,关注你新发现的异常。因为这个问题已经完成了,而且我在C++调试领域没有太多的专门知识。