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