我有一个 C# 服务,它正在调用最初用 VC6 编写的 C DLL。
我正在尝试检查 DLL 中存在一个错误。
在经历了一场试图让调试工作的噩梦之后,我最终将 dll 添加到包含 C# 服务的 VS2005 解决方案中,并添加了必要的_CRT_SECURE_NO_WARNINGS
.
该服务的调试版本是使用“installutil.exe”工具注册的。
我可以让调试器在通过调用输入 dll 的行之前中断System.Diagnostics.Debugger.Break();
.
我在网上找到了一些关于调试非托管代码的说明,并启用了“启用非托管代码调试”复选框,我还尝试打开“选项”->“调试”->“本机”“加载 DLL 导出”和“启用 RPC”调试”(即使它不是 COM)。我还将调试 dll 和 .pdb 复制到与服务相同的 bin 目录中。
然而,非托管代码并没有被步入,这才是我真正需要的。
UPDATE:我在 DLL 属性中找到了“调试类型”,并按照几个站点上的建议将其设置为“混合”,但无济于事。
UPDATE2:我的项目现在将调试 dll 和 pdb 发送到与调试服务相同的目录。仍然无法调试dll。
尝试将非托管代码设置为启动项目。我知道这没有意义,但我记得这是为一个非常相似的项目工作的。
由于 DLL 没有关联的可执行文件,因此当您尝试运行时,它将弹出,询问要运行哪个应用程序。浏览到您的 C# 应用程序,然后就可以开始了。
调试愉快!
编辑:已经有一段时间了,但我认为调试类型 Mixed 是正确的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)