【问题标题】:Can Delphi 5 generate a .PDB file that VS can use?Delphi 5可以生成VS可以使用的.PDB文件吗?
【发布时间】:2009-10-22 08:08:38
【问题描述】:

我们已经用 Delphi 5 编写了这个大型应用程序,并且开发工作一直持续到今天。正在研究迁移到较新版本,但到目前为止还没有成功,因为一些第 3 方组件已经很久没有更新并且不适用于更高版本。

与此同时,人们需要继续努力。现在 Delphi 5 IDE 不是真正的享受。它漏洞百出,缺乏当代 IDE 的许多功能,因此难以使用。尤其是在调试方面。

所以我想知道 - 是否可以在此过程中使用 Visual Studio?据我所知,.PDB 文件格式已经很老了,并且有据可查。是否有可能让 Delphi 编译器以某种方式为其编译结果生成 .PDB 文件?然后可以使用 Visual Studio 调试程序,可能比在原始 IDE 中调试的程度要大得多。

好吧,绝对的圣杯是将所有开发转移到 VS,只是让编译器远离 Delphi,但我认为这几乎是不可能的。

【问题讨论】:

  • 我真的不记得 Delphi 5 充满了错误。诚然,与 VS 相比,调试功能留下了一些希望。
  • 我认为解决问题比解决症状更重要:哪些第 3 方组件阻碍了您迁移到较新版本的 Delphi?
  • 我不太清楚,这不是我目前的工作领域。但他们表示,聪明的头脑已经研究过它,并且仍在努力寻找解决方案。
  • 那么这是您的第一步:了解原因。它比获取(非常有限的)PDB 信息和走 VS 路线(很可能根本没有局部变量)要容易得多。我做了很多迁移,甚至跳过了很多 Delphi 版本。通过有条不紊的方法,这是一项可以做得很好的工作。

标签: visual-studio delphi pdb-files delphi-5


【解决方案1】:

没有,任何其他版本的 Delphi 也不能。不过,您可以使用Map2Dgbdetailed map file 转换为dbg 文件,并且可以在WinDbg 中使用它。

我很好奇您希望在 Visual Studio 中使用哪些 Delphi 5 中没有的调试功能,并且这些功能也不依赖于 IDE 对 Delphi 语言的理解。我一直对 Delphi 5 很满意。

【讨论】:

  • 调试器中的检​​查器功能通常不显示不同对象的值(尤其是在 COM 世界中)。有时结果令人难以置信,根本无法描述现实中正在发生的事情。我还应该注意到,这个项目既庞大又混乱,大约有 15 年的历史。有……东西……住在那里。编译器挣扎。
  • 我知道最近的 Delphi 调试器在这方面要好得多。
  • Delphi 的调试器无法加载 minidump,可以吗?小型转储非常有用。您的流程在客户的机器上崩溃、冻结或行为异常?获取一个小型转储,加载它,然后您就在调试器中,就好像您正在调试该进程一样。 (当然,除了检查调用堆栈和变量之外,您什么也做不了。)
  • @Rob:这正是重点,对吧? Borland/Codegear/Embarcadero 编译器都不能生成 PDB 符号,因此 Minidump 几乎没有用处,例如,阻止任何用户以合理的方式使用 WinQual。
  • 不,@Status。问题是关于 Delphi 是否可以生成 PDB 文件,而不是它是否可以使用 minidump 文件。做一件事的能力并不能控制做另一件事的能力。我的回答解决了这个问题。我的评论涉及 Cyber​​shadow 的评论,该评论仅与问题无关;没有什么能阻止 Embarcadero 让 Delphi 能够使用 minidump 文件(并可能使用相关的 PDB 文件),即使它没有能力生成新的 PDB 文件。
【解决方案2】:

顺便说一句,你可以为这个功能投票here

注意,与 VS 兼容的调试信息不​​仅对调试应用程序有用(我同意:最好使用 Delphi),而且对使用 Process Explorer 等工具也很有用。例如,Process Explorer 可能能够显示人类可读的调用堆栈,而不是 RAW 数字。

【讨论】:

  • 很好,但我在 Delphi 5 中需要它。我认为他们不会升级它。 ;)
  • 这是个好主意,但PDB format 是,已经是,并且可能永远是,undocumented private format for Microsoft。 Borland/Imprise/CodeGear/Embarcadeo 无法生成 Portable Database (PDB) 文件,因为没有人知道格式。并且微软不会发布任何工具来写入给他们。
【解决方案3】:

我试过tds2pdb,它对我很有效。

【讨论】:

    【解决方案4】:

    显然你不能。似乎 PDB 毕竟是一种没有文档的专有 Microsoft 格式,因此没有其他工具可以生成它。遗憾。 :(

    【讨论】:

    • 同意。这让许多工具供应商感到非常沮丧,不仅仅是我们 RAD Studio 团队。也许 MS 应该支持 Turbo Debugger 格式,这实际上是有文档的,我们甚至提供了一个库来阅读它们。 :-)。
    • @Allen:所以 MS(曾经)不愿意参与谈判以允许您嵌入该功能?我不敢相信,tbh。
    • @RohitGupta - 我作者! :D
    • @RohitGupta - 海报名称的蓝色背景已经表明了这一点。 :) 但你是对的 - 这不是一个很好的答案,并且与接受的答案相同,所以我应该删除它。看到这条评论后告诉我,我会删除它。
    【解决方案5】:

    我建议迁移到更高版本的 Delphi。我们已经为客户提供了各种应用程序。迁移到较新版本的 Delphi 通常很简单,但是由于处理组件的方式发生了变化(设计时代码与运行时分离),从 D5 迁移到 D6 时出现了问题,并且在 D2009 中对 Unicode 的更改是一个更大的变化.

    主要是整理第三方组件。我们只使用源代码提供的第三方组件,所以如果最坏的情况发生并且供应商消失了,我们仍然可以自己处理组件。

    哪些组件导致了这些问题?

    【讨论】:

    • 我告诉过你 - 我不知道。我只知道这是一个他们暂时无法解决的大问题(他们为此付出了相当大的努力)。
    • 抱歉 - 错过了您在上面的评论。太急于发帖:-)
    • 以及Types.pasVariants.pas的创建以及在声明事物的地方移动的影响
    猜你喜欢
    • 1970-01-01
    • 2012-04-18
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 2010-12-04
    • 2019-08-29
    • 2012-02-11
    相关资源
    最近更新 更多