与这个问题有关。有关解决以下问题的任何建议?
在对该程序进行了大量实验后,我发现了几件事。
在运行代码行时,它相对一致地崩溃(大约 90% 的时间)
Set Message = New CAPICOM.EncryptedData
,. 请注意,这上面的行仅仅是Dim Message As CAPICOM.EncryptedData
.在程序执行的早期调用时,进行该调用的函数不会崩溃。对错误的二进制搜索无法找到问题,因为在某些地方神秘地调用该函数,不可靠地阻止了错误的发生。如果出现错误,有时重建程序似乎会产生影响。是的,它是一只海森虫。同样的问题也适用于错误的时间二分搜索。花了 5 个小时比较程序的两个版本,却发现两个版本都有错误,即使其中只有一个版本目前显示症状不是很有效。
崩溃是由于访问冲突 0xC00000005
运行 WinDbg(Windows 调试器)显示只有一行代码读取此内存位置,
LoadPicture(szTmpBMP)
. 它在一个可怕的函数结束时调用,该函数从资源中抓取图片并将其粘贴到临时文件中。我很害怕这个函数,为了测试,我用调用替换它LoadPicture("testcra.bmp")
,然后没有为那个位图调用可怕的资源函数。这没有帮助。完全删除对 loadpicture 的调用也无济于事,尽管调试器无法再找到正在读取受影响内存的任何点,并且受影响的内存不再位于同一位置。此测试是在 VM 上完成的,因此调试器不一定能看到某些内存读取。一切都在 Vista 上完美运行(我的本地机器和 Vista 虚拟机)。访问冲突只发生在 XP 上。
我正在使用 VB6 版本 8176、6.0.8169