更新
2016-02-18: 添加了进程信息
我有一个使用XE4编译的Delphi程序。它被几百个客户使用。几周前,其中一位客户报告说,在一天中的某些时候,执行文件的某些区域(下面的图像)会随机擦除。这位客户有35个站点使用这个exe,但问题只出现在其中不超过10个站点。
调查
1 - 我最初怀疑是一个无限循环。执行文件在组件被擦除时仍然响应,代码从发生问题之前没有发生如此根本的变化,而日志中也没有显示任何循环(这个exe到处都有日志)。
2 - 线程表现不良。我有一个单独的线程,在这个exe和我们的云服务器之间同步数据。同样,日志不显示线程在问题发生时正在运行,而且这里也没有发生任何更改。
3 - 其他程序(杀毒软件?)影响了我的exe。还没有适当地调查这个假设,但到目前为止,我没有找到任何安装的程序引起我的注意。
我的问题是:可能是什么导致了这个问题?我该如何进一步调查?我知道这可能是一个广泛的问题,但这是我能够收集到的所有信息,我想不出还有更多可以查看的地方。
图像
1 - 在下面的图像中,红色描边区域应该是一个TToolBar
2 - 在这张第二张图中,有三个区域,从上到下,第一个应该是一个TToolBar,第二个应该是子窗体的标题,第三个应该是一个TwwDBGrid
3 - 第三个示例在顶部显示了应该有 TEdit 的被删除区域,它下面是应该在 TwwDBGrid 上的一条线,侧边还可以看到 TwwDBGrid 的被删除滚动条
4 - 这个最后一个示例展示了 5 个被删除的区域:应用程序的标题,主要的 TToolBar,窗体的标题,一个 TButton 和两个 TwwDBGrid
5 - 这是一个有趣的示例,因为除了被删除的组件之外,还有 4 个 TSpeedButtons,但它们没有原来的图片(第一个红色划掉区域)。其他 3 个红色划掉区域分别是 2 个 TEdits、一个 TwwDBGrd 和一个 TButton
进程信息
我在问题出现时获得了截图。scgolr 是我的软件。