微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何调试只在应用程序关机时发生的崩溃? (DELPHI)

所以,在最近的一些变化之后,我们发现我们最古老的应用程序之一有时会关闭.这表现为“运行时错误216”消息的形式或者来自 Windows错误报告的应用程序已停止工作的消息.应用程序已经在每一回合发出OutputDebugString消息,并且AFAICT我们所有的代码都被正确执行完成.所有析构函数都被调用为所有最终化部分和类析构函数,它们都不会引发任何异常.

此外,madExcept和FastMM4的完全调试模式似乎都没有什么可以抱怨的(尽管这可能是一个错误的结论,因为即使在组件自己的最终化代码运行之前,崩溃也可能会发生).

那么,你会怎么做?你从哪里开始?

这个问题应该更多的是关于这类问题的一般方法,而不是我目前面临的具体实例,所以我故意省略细节.随意询问您是否认为它们可能与调试方法的选择有关,稍后会添加它们.

解决方法

运行时错误216意味着您有Av(访问冲突),SysUtils已经停止将这些错误转换为异常.

首先尝试:使用调试DCU构建并查看单元系统中出现错误的位置,在那里设置断点.希望你可以在调试器中抓住它,并在那里工作.

你可能有一个内存错误(悬挂的指针,空引用等)在一个已经完成的单元中使用s字符串常量),最好的方法是在sysutils完成之后检查最终确定.您可以通过构建WITH debug dcu来实现此目的,将断点设置为sysutils中的最终化,并开始逐步执​​行代码,直到发生错误.

原文地址:https://www.jb51.cc/delphi/102779.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐