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