【发布时间】:2011-07-08 01:22:20
【问题描述】:
因此,经过最近的一些更改,我们发现我们最古老的应用程序之一有时会在关机时崩溃。这表现为“运行时错误 216”消息或来自 Windows 错误报告的应用程序已停止工作的消息。该应用程序已经在每次发送OutputDebugString-messages 并且 AFAICT 我们自己的所有代码都会正确执行到完成。所有的析构函数都像所有终结部分和类析构函数一样被调用,它们都没有引发任何异常。
此外,madExcept 和 FastMM4 的完全调试模式似乎都没有什么可抱怨的(尽管这可能是一个错误的结论,因为崩溃可能在这些组件自己的最终代码运行之前发生)。
那么,你会怎么做?你会从哪里开始?
这个问题应该更多地是关于这类问题的一般方法,而不是关于我目前面临的具体实例,所以我故意省略了细节。随意询问您是否认为它们可能与调试方法的选择有关,我稍后会添加它们。
【问题讨论】:
-
存在一个 VCL 错误,在关闭时表现为 AV。它与
Owner破坏表单有关。我通过在Application.Run之后显式关闭 .dpr 文件中的表单来解决此问题。如果您让Application为您关闭,那么过时的引用可能会出现问题。 -
@David:听起来很有趣。你有那个 QC 号码吗?但是,除了主表单之外,我将在代码中创建所有表单,并将相应的父表单作为所有者。您所说的问题是否也适用于这种情况?
-
如果您依靠破坏应用程序来降低其他所有内容,那么我正在谈论的错误可能适用。尝试在 .dpr 文件中添加
MainForm.Free。我去看看 QC 号码。 -
@大卫:谢谢!我去看看。
标签: delphi debugging crash application-shutdown