Oli*_*sen 13 delphi crash debugging application-shutdown
因此,在最近的一些更改后,我们发现我们最老的应用程序之一有时会在关机时崩溃.这表现为"运行时错误216"消息的形式,或者来自Windows错误报告的消息,表明应用程序已停止工作.该应用程序已经OutputDebugString在每个回合发出消息,AFAICT我们自己的所有代码都正确执行完成.所有析构函数都被称为所有终结部分和类析构函数,其中没有一个会引发任何异常.
此外,madExcept和FastMM4的完全调试模式似乎都没有什么可抱怨的(尽管这可能是一个错误的结论,因为甚至在这些组件自己的终结代码运行之前就可能发生崩溃).
那么,你会做什么?你会从哪里开始的?
这个问题应该更多地关于这类问题的一般方法,而不是我目前面临的具体实例,所以我故意遗漏细节.请随意询问您是否认为它们可能与调试方法的选择相关,我稍后会添加它们.
Rit*_*tra 12
运行时错误216表示您具有Av(访问冲突),并且SysUtils已停止将这些错误转换为异常.
首先尝试:使用调试DCU构建并查看引发错误的单元系统,在那里设置断点.希望你能在调试器中捕获它并从那里开始工作.
您可能有一个内存错误(悬挂指针,空引用等等在已经完成的单元中使用s字符串常量),最好的方法是在sysutils完成后检查完成.您可以通过构建WITH debug dcu,将断点设置为sysutils中的finalization并开始逐步执行代码直到发生错误来完成此操作.
你在使用运行时包吗?我以前见过类似的问题.如果要跨包边界共享全局变量或接口,则必须确保在卸载该包之前清除对属于某个包的类的所有引用; 否则他们会尝试将虚拟调用放入不再有效的内存中.
| 归档时间: |
|
| 查看次数: |
6240 次 |
| 最近记录: |