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

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

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

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

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

解决方法

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

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

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

相关文章

 从网上看到《Delphi API HOOK完全说明》这篇文章,基本上都...
  从网上看到《Delphi API HOOK完全说明》这篇文章,基本上...
ffmpeg 是一套强大的开源的多媒体库 一般都是用 c/c+&#x...
32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和ED...
1 mov dst, src dst是目的操作数,src是源操作数,指令实现的...