c# – 调试本机代码

我有一个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#应用​​程序然后您应该很高兴.

快乐的调试!

编辑:已经有一段时间了,但我认为调试类型混合是正确的

点赞