[英]Cannot Debug Unmanaged Dll from C#
我有一个用C++
编写并从C#
应用程序调用的DLL。 DLL
是非托管代码。
如果我将带有post build事件的DLL
及其.pdb
文件复制到C#
app的调试执行dir
我仍然无法点击我放入DLL
代码的任何断点。 断点附有一条消息,称“没有为此文档加载符号”。
还有什么办法可以在dll
源代码中进行调试?
我有“ Tools
- > Options
- > Debugging
- > General
- >仅Enable
我的代码”已禁用。 DLL
正在使用“运行时跟踪和禁用优化(/ ASSEMBLYDEBUG)”编译,并生成调试信息为“是(/ DEBUG)”
要调试C ++ DLL,您需要在解决方案中的启动应用程序上启用混合模式调试。
这将允许您调试F5样式场景的本机代码。 如果要将其启用以附加到进程,请在“附加到进程”对话框中执行以下操作
您需要启用非托管(本机)调试。
如果您在启动后附加到该进程:
转到“工具”菜单,然后附加到进程,确保已启用本机调试。
您将看到一个只读编辑框:
附加到:托管代码,本机代码[Select]
确保在那里列出本机代码。 如果没有添加它。
如果您从visual studio中启动项目:
在您以调试模式启动的项目属性上。 转到项目“属性”,然后选择“调试”选项卡。
确保选中此复选框:
启用非托管代码调试
附加到要调试的进程时,必须指定要附加的方式。 您有几个选项,即Managed和Native。 为了使用非托管C ++调试C#代码,您必须将进程作为Managed和Native附加(两者都可以同时选择)。
面对同样的问题并完成了所接受的答案中提出的所有问题,但非托管DLL中的断点没有被击中!
但是,当我做了以下我可以最终调试DLL!
在Solution Explorer中选择解决方案
从Menu
>> Tools
>> options
>> Debugging
>> General
取消选中“ 要求源文件与原始版本完全匹配 ”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.