我是传统Delphi应用程序的维护者.在运行此程序的计算机上,有时会出现应用程序错误,标题引用此Delphi应用程序,并显示如下消息: The instruction at “…” referenced memory at “…”. The memor
The instruction at “…” referenced memory at “…”. The memory could not be “read”.
Click on OK to terminate the program.
任务管理器说属于此消息框的进程是csrss.exe.找到此错误的根本原因的系统方法是什么?
问题是,这个Delphi程序相当复杂,并且错误消息相对较少出现,所以我不能简单地单步执行代码并找到导致错误的部分.此外,应用程序会自动运行,无需用户中断,因此我无法询问用户当消息出现时她做了什么.应用程序和系统日志不表示任何问题.当消息框存在时,应用程序不会停止工作.
我希望有人之前遇到过这样的错误信息,并且能够解决问题.提前谢谢你的帮助.
csrss
支持Windows控制台.我希望您的应用程序以控制台子系统为目标.
如果您无法在调试器下使应用程序失败,则需要为其添加一些诊断程序.我建议使用像madExcept或EurekaLog这样的工具来做到这一点.我个人使用madExcept并且不能足够推荐它.据我所知,EurekaLog也是一款优质产品.
将这些工具中的一个与您的应用程序集成,下次出现故障时,将生成详细的诊断报告.最重要的是,您将获得流程中每个线程的堆栈跟踪.错误线程的堆栈跟踪应该会引导您找到程序错误的根本原因.
我怀疑的是,如果故障发生在csrss中,那么在你的过程中包括诊断可能不会产生结果.您的应用程序已经出现故障,这可能导致csrss中的错误消息,这似乎是合理的.在这种情况下,应用程序中的诊断将有所帮助如果没有,那么您可能需要找到一种方法来在您的过程中发生故障.