代码之家  ›  专栏  ›  技术社区  ›  Hath

vb6使.exe的结果与调试器不同

vb6
  •  1
  • Hath  · 技术社区  · 17 年前

    我将使用Make.exe时生成的结果与通过IDEVB6调试器使用完全相同的变量运行完全相同的进程时生成的结果进行比较。

    我尝试了一系列不同的编译器选项,但都没有用。

    你来过类似的地方吗?如果是的话,你找到解决办法了吗?

    该计划采取了一个时间段的汽车计数大文件,并平均为15分钟的时间段为一天超过一个月的每条路线。 它根据是否有超出标准差和其他统计算法的值来消除某些记录。

    4 回复  |  直到 17 年前
        1
  •  3
  •   dummy    17 年前

    Debug.Assert Debug.Print 语句没有编译成二进制。我有时会用它来检测我是在IDE中还是在编译的二进制文件中:

    On Error Resume Next
    Debug.Print 1/0
    If Err=0 then
      'Compiled Binary
    else
      'in the IDE
    End if
    

    注意这样的陈述:

    Debug.Assert( DoSomeThingImportend() )
    

    在编译版本中,不会执行此语句。

        2
  •  0
  •   Ant    17 年前

    我发现在某些(非常罕见的)情况下,VB6的编译代码和调试代码可能存在差异。

    也许值得尝试“编译为P代码”选项—有时这会给出与本机代码稍有不同的结果。您可以在projectproperties/Compile选项卡中找到它。

    如果你公布你的算法,我们可能会发现更多的可能性。

        3
  •  0
  •   DarinH    15 年前

    vb6在编译一致性方面相当可靠。但一种可能是,如果你以任何方式依赖事件,并使用doevents来屈服。

    我猜你不是,但是,嘿,有什么要检查的。

        4
  •  0
  •   Hrqls    13 年前

    您可以通过在代码的各个部分之间添加一些暂停来测试这一点 通常一个额外的DoEvent就可以完成这个任务,或者让一些msgboxes弹出(然后还可以比较编译版本和调试版本的中间结果)

    试着找出计算的哪一部分给出了错误的结果,并将该部分分离成一个单独的函数

    这种差异通常直接发生在开始时(没有时间初始化),或者在流程中的某个地方直到结束(在另一个流程上运行)