【问题标题】:How can I debug an access violation which is raised whilst my application is initializing?如何调试在我的应用程序初始化时引发的访问冲突?
【发布时间】:2012-11-27 15:27:30
【问题描述】:

我的 Delphi 应用程序在运行之前引发了访问冲突错误。我在Application.Initialize 行设置了一个断点,但我的应用程序没有运行,我仍然遇到异常。如何找到问题?

【问题讨论】:

标签: delphi delphi-xe2


【解决方案1】:

unit initialization section 是在Application.Initialize 执行之前运行的代码。这是单元底部initialization 部分中的代码。

因此,您似乎在该代码中有错误。很可能它会在您自己的单位之一中。要做的是在调试器下运行并查看调试器在哪个单元中断。确保您的 IDE 配置为在发生访问冲突时中断。

我还建议启用调试 DCU,以防在 RTL/VCL 单元之一中出现异常。

【讨论】:

  • initialization 部分到底在哪里?我找不到它
  • 它在一个单元的底部。并非所有单位都有。你的项目中会有很多。您需要找出引发异常的位置。这是第一个任务。让调试器来做。在理想情况下,您的应用程序中会包含 madExcept,并且您会收到包含堆栈跟踪和许多有用细节的错误报告。没有它,你将不得不以艰难的方式去做。
  • Kermia:如果您不知道,您可以在 IDE 中运行您的程序,以使用 F7 而不是 F8 来跟踪每个单元的初始化代码进行编译。然后使用 F7 单步执行您的程序。调试器将在每个单元运行时将您带到每个单元的初始化代码。我相信您的 .dpr uses 语句中的单位顺序在一定程度上控制了订单单位的初始化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
相关资源
最近更新 更多