我有一个 C# 服务正在调用最初用 VC6 编写的 C DLL。
我正在尝试检查 DLL 中的错误。
在经历了一场试图让调试工作的噩梦之后,我最终将 dll 添加到包含 C# 服务的 VS2005 解决方案中,并添加了必要的 _CRT_SECURE_NO_WARNINGS
。
服务的调试版本是使用“installutil.exe”工具注册的。
我可以通过调用 System.Diagnostics.Debugger.Break();
让调试器在输入 dll 的行之前中断。
我在网上找到了一些关于调试非托管代码的说明,并启用了“启用非托管代码调试”复选框,我还尝试打开选项->调试-> native “加载 DLL 导出”和“启用 RPC 调试”(即使它不是 COM)。我还将调试 dll 和 .pdb 复制到与服务相同的 bin 目录中。
然而,我真正需要的是未进入非托管代码。
更新:我在 DLL 属性中找到了调试类型,并根据多个站点的建议将其设置为“混合”,但无济于事。
UPDATE2:我的项目现在将调试 dll 和 pdb 发送到与调试服务相同的目录。仍然无法调试 dll。
最佳答案
尝试将非托管代码设置为启动项目。我知道这没有意义,但我记得这是为一个非常相似的项目工作的。
由于 DLL 没有关联的可执行文件,当您尝试运行时,它会弹出询问要运行的应用程序。浏览到您的 C# 应用,然后就可以开始了。
调试愉快!
编辑:已经有一段时间了,但我认为调试类型 Mixed 是正确的
关于c# - native 代码的调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2522872/