gpt4 book ai didi

c# - 调试 C++/Cli : and no Locals

转载 作者:可可西里 更新时间:2023-11-01 08:34:15 25 4
gpt4 key购买 nike

我正在尝试使用 C# 程序集和 C++/Cli 程序集调试项目。

C# 中定义的接口(interface)由 C++/Cli 类继承,后者又调用 native C++ 类。在 C++ 和 C# 程序集以及启动 .exe 中都启用了混合模式调试。

现在,当我尝试调试 C++ 部分时,它变得很棘手;如果我只是在 C++ 部分设置断点,它们就不会被击中(尽管我知道它们被击中是因为日志(等)被写入并且在那里抛出异常实际上会正确地抛出它)。

当我在调用混合模式程序集之前在 C# 中的最新调用处设置断点时,我可以进入 C++/Cli 代码,甚至可以进入 native 部分。但是,调用堆栈显示为

MyMixedMode.dll!<Unknown function> Line ... 

而且我无法检查任何局部变量(在 native 代码中,局部变量 View 只是空的)。

知道我可能做错了什么吗?

最佳答案

不幸的是,VS 中对 C++/CLI 项目的工具支持不断减少,他们正在努力维护它。添加到 VS2012 的新调试引擎存在问题,该引擎支持新的 C++ debugging visualizers , 它不再支持 C++/CLI。

VS2012 Update 1 在 Tools + Options, Debugging, General 添加了一个新的设置,名为“Managed C++ Compatibility Mode”。在 VS2013 中混淆地重命名为“使用托管兼容模式”。此设置页面的 MSDN 页面中未记录。它的作用是强制调试器使用旧的调试引擎而不是新的。

这确实有一个副作用,当您打开该选项时,那些 Shiny 的新调试可视化工具将无法工作。如果您的 native 代码的调试信息看起来不正确,请记住这一点。

关于c# - 调试 C++/Cli : <Unknown function> and no Locals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19512785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com