Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的汇编程序。。。这可能是我的应用程序崩溃的原因吗? 我在Windows下使用VB6DLL在本地C++中有一个程序。在某个动作时,C++应用程序在使用DLL时,会出现一个“精确结果浮点”错误。_C++_Vb6_Floating Point - Fatal编程技术网

奇怪的汇编程序。。。这可能是我的应用程序崩溃的原因吗? 我在Windows下使用VB6DLL在本地C++中有一个程序。在某个动作时,C++应用程序在使用DLL时,会出现一个“精确结果浮点”错误。

奇怪的汇编程序。。。这可能是我的应用程序崩溃的原因吗? 我在Windows下使用VB6DLL在本地C++中有一个程序。在某个动作时,C++应用程序在使用DLL时,会出现一个“精确结果浮点”错误。,c++,vb6,floating-point,C++,Vb6,Floating Point,当我进入debug并查看assembler时,我得到以下行: 75A0FB7C je 759E8797 当您将鼠标悬停在最右边的地址上时,将显示一个工具提示,其中包含以下内容: 1.#INF0000000000 这就是我犯这个错误的原因吗 有人知道这是为什么吗?在VB6 IDE下运行此VB6 DLL不会产生这样的错误…我怀疑调试器错误地将该地址解释为浮点,并且该位表示恰好是INF。至少在某些情况下,x86硬件会在实际导致问题的浮点语句之后在浮点语句上崩溃。我认为我们需要

当我进入debug并查看assembler时,我得到以下行:

75A0FB7C  je          759E8797 
当您将鼠标悬停在最右边的地址上时,将显示一个工具提示,其中包含以下内容:

1.#INF0000000000
这就是我犯这个错误的原因吗


有人知道这是为什么吗?在VB6 IDE下运行此VB6 DLL不会产生这样的错误…

我怀疑调试器错误地将该地址解释为浮点,并且该位表示恰好是INF。至少在某些情况下,x86硬件会在实际导致问题的浮点语句之后在浮点语句上崩溃。我认为我们需要更多的上下文,但是前面的语句之一是为条件跳转准备的浮点比较吗

P> > C++程序可能正在做一些浮点运算,它设置了一个FP状态寄存器,然后VB6 DLL纯粹是被叫FPU处于不稳定状态时的牺牲品。
您是否准确地确定了是什么输入导致了问题?

我怀疑调试器将该地址误解为浮点,并且该位表示恰好是INF。至少在某些情况下,x86硬件会在实际导致问题的浮点语句之后在浮点语句上崩溃。我认为我们需要更多的上下文,但是前面的语句之一是为条件跳转准备的浮点比较吗

P> > C++程序可能正在做一些浮点运算,它设置了一个FP状态寄存器,然后VB6 DLL纯粹是被叫FPU处于不稳定状态时的牺牲品。
您是否准确确定了是什么输入导致了问题?

否,这与FPU无关。VB6运行时使用该浮点异常来实现自己的异常处理。关于错误陈述,我相信你很熟悉

他们到底为什么选择重复使用硬件异常代码对我来说一直是个谜,这个小玩意儿在15年的VisualBasic设计中消失了。它不包含字节,因为FPU是由VB6运行时初始化的,该异常被屏蔽

总之,诊断是您的VB6代码由于未处理的异常而崩溃。要了解发生了什么,请确保从VB6调试器运行代码。还要确保选中“调试+异常”对话框,抛出的框应处于关闭状态。按F5以正常方式处理异常。从那以后它应该会爆炸

从MarkJ的有用链接:


您通常会看到的另一个例外是c000008f。如果您查找该数字,则会发现它是一个浮点不精确结果异常。这里使用的是不同的含义–因为我们不生成真正的浮点不精确结果异常,所以可以安全地抛出它们以指示正常可捕获类型的VB错误

否,这与FPU无关。VB6运行时使用该浮点异常来实现自己的异常处理。关于错误陈述,我相信你很熟悉

他们到底为什么选择重复使用硬件异常代码对我来说一直是个谜,这个小玩意儿在15年的VisualBasic设计中消失了。它不包含字节,因为FPU是由VB6运行时初始化的,该异常被屏蔽

总之,诊断是您的VB6代码由于未处理的异常而崩溃。要了解发生了什么,请确保从VB6调试器运行代码。还要确保选中“调试+异常”对话框,抛出的框应处于关闭状态。按F5以正常方式处理异常。从那以后它应该会爆炸

从MarkJ的有用链接:


您通常会看到的另一个例外是c000008f。如果您查找该数字,则会发现它是一个浮点不精确结果异常。这里使用的含义不同–因为我们不生成真正的浮点不精确结果异常,所以可以安全地抛出它们以指示正常可捕获类型的VB错误

至少从声音上看,调试器将地址解释为浮点值,给出一个无意义的结果。至少从听起来,调试器正在将地址解释为浮点值,给出一个无意义的结果。我还没有确定产生结果的确切输入。输入是在脚本中生成的,脚本在我的C++程序中被解析。这有点困难…我还没有确定产生结果的确切输入。输入是在脚本中生成的,脚本在我的C++程序中被解析。让它变得有点困难。。。