0

我知道这个主题已经在新闻组中被写死了,并且有非洲论坛帖子 - 但我希望你们专家可以选择堆栈溢出 :)

我们的 VB6 应用程序偶尔会在用户执行操作时消失,并且不会给出任何类型的错误,也不会出现在 PC 的错误日志中!

我想知道是否有人以前在 VB6 上听说过这个,你做了什么来解决它?

我想也许将所有代码从本机代码更改为 pcode 可能会提供更高的稳定性?


额外信息:

  • 我们正在使用 Mdac 2.8
  • 真正的数据库网格 6.0e

编辑中添加的注释:

  • 我们的应用程序非常大,有 113 个独立的组件和 120MB 的编译大小(没有嵌入图片或任何东西)
  • 我们的表示层动态创建对象,所以一切都是后期绑定的。
  • 我并不真正关心 VB6 应用程序的本地性能,因为据我所知,它并没有真正进行任何认真的处理,因此性能完全受到我们在距离 300 位用户 80 英里的数据中心中的 Oracle 数据库的限制 -恶梦!
4

1 回答 1

1

它有所作为。但不赞成其中之一。因为两种方法并不完全相同,所以它们可以在边缘情况下产生不同的结果。

还要了解我所描述的问题是编译器问题,而不是程序员的错误。所以你要真正确定这是问题所在。我们通过将更改与最后一个已知的良好版本进行比较来检查这一点。

我们遇到的问题是,对于我们的一些大型项目,代码中的小改动会导致错误(或者应用程序就消失了)。使用二进制文件时会发生这种情况。

当这种罕见的情况发生时,唯一的解决方法是重新排序代码行或插入像 i = i 这样的虚拟行。任何会强制编译器发出不同序列的程序集或 pcode 的东西。然后问题就消失了。

有几个例子我们这样做,成功编译,改回来,并成功编译回来。我们认为在这种情况下发生的情况是注册表更改足以强制发出一组略有不同的二进制/pcode。

您可能还需要清理注册表和本地临时文件夹。

我的经验是,对于具有多个引用的大型项目的每 1000 到 500 次编译,这可能会发生一次。

作为个人评论,当这种情况发生时,原因和解决方案似乎很荒谬,让我想打破巫毒娃娃并跳起雨舞。

于 2009-03-05T20:56:06.327 回答