【发布时间】:2012-06-27 14:20:43
【问题描述】:
我有一个 C# DLL with native exports,它是从一些 Delphi 2009 代码中调用的。 Delphi 代码使用LoadLibrary 和GetProcAddress 来访问导出的函数。我想在运行时调试代码的托管部分,但我遇到了麻烦。
当我启动应用程序时,断点正确显示,但未能命中。
我目前的设置如下:
- Visual Studio 2010 中的 C# DLL 项目
- 项目的调试设置设置为“启动外部程序”,指向 Delphi 可执行文件。
- 已启用的非托管代码调试已关闭。
- 在调试选项中启用了 Just My Code(这似乎没有什么区别)
我尝试启用非托管代码调试,但这会导致错误提示“二进制文件是在没有调试信息的情况下构建的”。如果我继续,所有断点都会被禁用。
当我检查模块列表时,可执行文件显示没有调试符号。 Delphi 不生成 PDB(它不能,因为它是封闭规范的专有格式),而是生成一个 MAP 文件。我环顾四周寻找 MAP-to-PDB 转换器工具,但似乎只有一个工具可以与我需要的相反。
我对从 Visual Studio 调试 Delphi 代码并不是很感兴趣,因为我已经可以在 CodeGear Delphi IDE 中执行此操作,但是在这种情况下有没有办法在运行时调试托管代码?
【问题讨论】:
标签: c# visual-studio delphi debugging debug-symbols