gpt4 book ai didi

windows-7 - Windows 7 和 VB6 : Event Error ID 1000

转载 作者:行者123 更新时间:2023-12-02 19:51:09 24 4
gpt4 key购买 nike

我在现场的某个特定软件上弹出了一个完全随机的错误。该应用程序是一个用 VB6 编写的游戏,在 Windows 7 64 位上运行。每隔一段时间,应用程序就会崩溃,并显示通用的“program.exe 已停止响应”消息框。该游戏可以连续几天正常运行,直到出现此消息,或者在几个小时内。没有抛出异常。

我们在 Windows 2000 兼容模式(这是其原始操作系统)下运行此应用程序,禁用视觉主题,并以管理员身份运行。应用程序本身在使用外部组件和 API 调用方面故意简单。

引用文献:

Visual Basic 应用程序
Visual Basic 运行时对象和过程
Visual Basic 对象和过程
OLE自动化
Microsoft DAO 3.51 对象库
Microsoft 数据格式化对象库

组件:

微软通信控制6.0
Microsoft Windows 通用控件 6.0 (SP6)
调整大小 XT

正如您所看到的,这些工具大部分都是非常简单的 Microsoft 标准工具。数据库组件的存在是为了与用于簿记的 Access 数据库进行交互,并且 Resizer XT被插入是为了更轻松地将游戏从原来的 800x600 分辨率移动到 1920x1080。

信息亭上没有启用网络;没有网络驱动程序,因此没有与远程数据库的连接。一切都封装在一个盒子中。

在 Windows 应用程序事件日志中,当发生这种情况时,会出现一个事件 ID 1000,该模块看似随机的模块出现故障 — 到目前为止,要么是 ntdll.dll,要么是 lpk.dll。在 API 调用方面,我没有看到来自 ntdll.dll 的任何调用。我们使用 kernel32、user32 和 winmm 来实现各种文件系统和声音功能。我无法重现,因为它是完全随机的,所以我什至不知道从哪里开始排除故障。有什么想法吗?

编辑:更多信息。在其他一些开发人员的建议下,我尝试了几个不同版本的 Dependency Walker,最新版本显示我缺少 IESHIMS.dll 和 GRPSVC.dll (这两个似乎是 Depends.exe 中众所周知的错误) ,并且我在 COMCTRL32.dll 和 IEFRAME.dll 中缺少符号。有什么线索吗?

最佳答案

来自应用程序事件日志的消息没有那么有用 - 您需要的是来自进程的事后进程转储 - 这样您就可以看到代码中的哪里开始出错。

每当我看到这些问题之一时,它通常都会归结为错误的 API 参数,而不是更奇特的东西,这可能是由传入的错误数据引起的,但通常是一个很好的老式错误导致了问题.

正如您可能已经想到的那样,这并不容易调试;理想情况下,您应该有一个可重复的故障情况需要调试,而不是依赖于从远程计算机捕获转储文件,但在您可以使其可重复之前,远程转储是唯一的出路。

Dr Watson 曾经这样做过,但不再发货,因此替代方案是:

您需要获得的是小型转储,其中包含进程空间的重要部分,不包括标准模块(例如 Kernel32.dll) - 并用版本号替换转储。

Automatically Capturing a Dump When a Process Crashes的说明- 它使用调试工具附带的 cdb.exe,但关键项目是注册表项 \\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

您可以更改代码以添加更好的错误处理 - 如果您可以将原因缩小到几个过程并使用 Using symbolic debug information to locate a program crash. 中描述的技术,则特别有用直接处理 map 文件。

一旦您获得了小型转储和符号文件,WinDbg 就是挖掘这些转储的首选工具 - 但是要找出原因可能需要一段时间。

我要考虑的唯一一件事(这取决于您的应用程序结构)是 try catch 所有输入事件以进行重播。

另一个选择是找到 VMWare 7.1 的副本,其中包含 replay debugging并将其用作捕获一组可重复步骤的第一步。

关于windows-7 - Windows 7 和 VB6 : Event Error ID 1000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10807277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com