当程序在地址0处与异常0xc0000005崩溃时,我该怎么办?

sam*_*nne 12 delphi crash debugging

我的Delphi程序作为NT服务运行,运行良好超过2个月,然后突然停止并生成崩溃转储:

错误应用程序名称:tca_shctisvc_ip.exe,版本:7.1.0.1843,时间戳:0x2a425e19错误模块名称:未知,版本:0.0.0.0,时间戳:0x00000000异常代码:0xc0000005错误偏移量:0x00000000

根据Windows事件日志中的信息,没有可用的真实地址.我能够将迷你转储加载到WinDbg中,它说有一个例外,但发现了堆栈帧的问题.一个不同的工具(Viewminidump)能够显示正在运行的线程的堆栈.

我从哪里开始解决此问题?

Rem*_*eau 30

异常代码0xc0000005是访问冲突.故障偏移的AV 0x00000000意味着服务代码中的某些内容正在访问nil指针.您只需在服务运行时调试该服务以找出它正在访问的内容.如果您无法在调试器中运行它,那么至少要安装第三方异常记录器框架,例如EurekaLogMadExcept,以了解您的服务在AV时正在执行的操作.

  • +1表示异常记录器.除了调试器本身,这是我发现的最有用的调试工具. (6认同)