c# - native 代码的调试

标签 c# debugging dll visual-studio-2005 service

我有一个 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/

相关文章:

c# - Task.Yield、Task.Run 和 ConfigureAwait(false) 之间有什么区别?

c# - 在 C# 中运行的应用程序之间共享变量

visual-studio - 无法进入 dll(pdb 可用)

C# - 'Resources' DLL 无法加载,因为它不存在 - 如何找到引用以便删除它?

android - 应用程序在调试器模式下运行,调试器不会连接

javascript - 从 Google Chrome 导出 Javascript 控制台日志

c# - 数据模板中的 MVVM 命令

c# - NServiceBus - 如何在消息信封中传递自定义 header ?

c# - 如何删除.net 2.0后面代码中的css类

C MPI - 没有明显原因的崩溃 - 程序接收到信号 SIGSEGV