【问题标题】:Debugging a Delphi project EXE locally在本地调试 Delphi 项目 EXE
【发布时间】:2011-11-07 23:48:54
【问题描述】:

我有一个由 D2006 编译器生成的 EXE,以及与该 EXE 位于同一文件夹中的相关 RSM 和 MAP 文件。这些文件在安装 Delphi 的机器上是本地的。我可以启动 IDE 并“加载进程”EXE 并运行它,但如果我暂停执行,我将看不到任何符号信息。

我必须做些什么才能在反汇编中看到过程名称等作为标签,并能够通过指定例程名称来“转到”地址?

如果我在同一文件夹中有可用的源,我可以进行高级步进等吗?

【问题讨论】:

  • AFAIK,这行不通。 Delphi 使用位于 .dcu 文件中的调试信息进行调试。您可能可以使用带有 .rsm 符号的“远程调试”来完成此操作,但不能通过 IDE 的调试器直接加载进程,而且我认为您仍然需要本地的 .dcu 文件才能使用远程调试器执行此操作。您拥有应用程序的源代码(您说“在同一文件夹中可用的源代码”)。为什么不在 IDE 中加载项目并正常调试?
  • 谢谢@Ken。当我部署可执行文件并保存可执行文件、MAP 和 RSM 文件以及当时的源集时。如果我在该领域的先前构建中遇到错误,我想我可以将该文件集恢复到一个临时文件夹,加载 EXE 并使用 IDE 在源代码级别调试代码。你说的是我还需要保存 DCU 文件。虽然我可以在 IDE 中加载该文件集并对其进行调试,但我会遇到一些使用的库例程将“继续”的问题。也许答案是改用远程调试器(我从未使用过)。
  • 是的,我知道版本控制系统会让我这样做......

标签: delphi debugging exe delphi-2006 disassembly


【解决方案1】:

为了调试我的 delphi 应用程序,我使用 ma​​dExcept,这是一个非常好的工具,并且易于为您的项目设置,这里有一些关于它的信息。

"madExcept 旨在帮助您定位软件中的崩溃。每当您的程序中出现崩溃/异常时,madExcept 会自动捕获、分析、收集大量有用信息,并为最终用户发送给你一份完整的错误报告。”

http://madshi.net/madExceptDescription.htm

【讨论】:

  • 这并没有回答所提出的问题,即如何调试已构建的可执行文件。 madExcept 是一个异常处理产品,但必须首先编译到应用程序中。它不是调试器,也不进行远程符号调试。 (然而,这是一个很棒的异常处理包。)请再读一遍这个问题。如果您想推荐 madExcept,则应将其作为对原始问题的评论;这不是答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-26
  • 2012-10-03
  • 2021-02-10
  • 1970-01-01
相关资源
最近更新 更多