【问题标题】:Delphi 2009 causing shell32.dll errors?Delphi 2009 导致 shell32.dll 错误?
【发布时间】:2010-12-15 23:25:53
【问题描述】:

我有一个用户在使用我的软件时开始遇到与他的 shell32.dll 文件相关的访问冲突。在升级到我们软件的最新版本后开始出现这种情况,这是我们在 D2009 中编译的第一个版本。

没有其他人报告这些 AV 问题,我自己也无法复制这些问题。因此,这似乎与他特定的 Windows 安装有关。我使用 EurekaLog,所以我可以看出其中一些 AV 与应用程序中各种表单的创建或显示有关。通常,以下引用作为调用堆栈的最后一件事给出:

shell32.dll > ILIsEqual

有人对我如何让该用户再次使用有任何想法吗?或者我如何才能获得更多关于实际问题的线索?过去,我发现这些只发生在一个用户的机器上的错误很难追踪....

【问题讨论】:

  • 调用堆栈上的最后一件事可能不如调用堆栈上来自您的代码的最后一件事重要。你的代码在做什么,它调用了什么函数最终调用了 shell32?
  • 客户端使用 XP Pro SP3。问题是我的代码中的最后一件事并不总是相同的。并且错误不是来自任何可重复的操作(例如单击按钮等)。另外,它总是来自简单的事情,比如显示表单。我开始认为他的操作系统安装可能有问题?
  • 我不认为操作系统安装搞砸了。 ILIsEqual 可以代表ImageListIsEqual,在这种情况下,图形卡、图形卡驱动程序、已安装的外壳扩展程序和程序中图像列表格式的组合很可能存在问题。尝试从您的应用程序中删除艺术作品,或将其替换为黑白或 16 色版本,或让客户尝试不同的屏幕分辨率、颜色深度或更新的卡驱动程序版本。
  • 问题也应该标记为“shell”

标签: delphi delphi-2009


【解决方案1】:

我同意,很难复制这样的错误。这就是质量记录如此重要的原因。对于这样的问题,我会使用以下方法。

  1. 使用良好的日志记录方法(您已经有了)
  2. 发生错误时让用户向您发送报告(您已经拥有报告)
  3. 尽可能多地查看报告以了解用户计算机设置
  4. 检查堆栈跟踪并查看代码中发生错误的位置,或者您的代码最后一次调用。
  5. 如果您仍然无法找到或复制错误,请在版本控制系统中为您的应用创建一个新分支。在该分支中,围绕您在堆栈跟踪中标识的位置增加日志记录。尽可能多地记录。将此版本发送给用户。
  6. 等待下一个用户报告。
  7. 重复该过程并尝试记录更多,如有必要,可能会扩大沉重的原木半径。

如果您有时间,您还可以与用户交谈。通过这种方式,他们有时会告诉您可以帮助您的重要新信息。

在过去一周左右的时间里,我发现了两个令人讨厌的错误。我刚刚开始有条不紊地朝着目标前进。当我发现错误的气味时,找到它只是时间问题。我发现如果你有条不紊,迟早你会找到原因的。

【讨论】:

    猜你喜欢
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多