Wil*_*ert 11 .net c# c++-cli visual-studio
我正在尝试使用C#程序集和C++/Cli程序集调试项目.
C#中定义的接口由C++/Cli类继承,后者又调用本机C++类.在C++和C#程序集以及启动.exe中都启用了混合模式调试.
现在,当我尝试调试C++部分时,它变得棘手; 如果我只是在C++部分中设置断点,它们就不会被击中(尽管事实上我知道它们被击中了,因为写入了日志(等)并抛出异常,实际上它会正确地抛出它).
当我在调用混合模式程序集之前在C#的最新调用中设置断点时,我可以进入C++/Cli代码,甚至进入本机部分.但是,Call堆栈显示为
MyMixedMode.dll!<Unknown function> Line ...
Run Code Online (Sandbox Code Playgroud)
并且我无法检查任何本地人(本机代码中的本地视图只是空的).
我有什么想法可能做错了吗?
Han*_*ant 17
不幸的是,VS for C++/CLI项目中的工具支持部分不断下降,他们正在努力维持它.添加到VS2012的新调试引擎存在问题,VS2012支持新的C++调试可视化工具,它不再支持C++/CLI.
VS2012 Update 1在Tools + Options,Debugging,General中添加了一个名为"Managed C++ Compatibility Mode"的新设置.在VS2013中混淆地重命名为"使用托管兼容模式".在此设置页面的MSDN页面中未记录.它的作用是强制调试器使用旧的调试引擎而不是新的调试引擎.
这确实有副作用,当你打开选项时,那些闪亮的新调试可视化工具将无法工作.如果您的本机代码的调试信息看起来不正确,请记住这一点.
Wil*_*ert 11
我找到了解决方案:项目上的混合模式调试设置是不够的,此外,Visual Studio需要启用
[x] Use Managed Compatibility Mode
Run Code Online (Sandbox Code Playgroud)
在工具 - >选项 - >调试 - >常规中.
| 归档时间: |
|
| 查看次数: |
3273 次 |
| 最近记录: |