1

我现在正在尝试使用这个 Application Verifier 调试工具,但我被卡住了,首先:它在简单的变量设置行(例如 s = 1)处中断了程序

其次,现在当我在调试器下运行这个程序时,我的程序似乎已经改变了它的行为:我正在绘制图像,现在其中一种颜色已经改变了 o_O,我不绘制的所有图像部分都改变了当它应该是#000000 时将颜色设置为#CDCDCD,并且我已经将默认颜色设置为零,但它仍然变为#CDCDCD。

我对此有何意义?

这是 AV 给我的输出:

VERIFIER STOP 00000002: pid 0x8C0: Access violation exception. 

    14873000 : Invalid address causing the exception
    004E422C : Code address executing the invalid access
    0012EB08 : Exception record
    0012EB24 : Context record

AVRF: Noncontinuable verifier stop 00000002 encountered. Terminating process ... 
The program '[2240] test.exe: Native' has exited with code -1073741823 (0xc0000001).
4

2 回答 2

1

通常,当在调试器中像这样(通过 AV 或未处理的异常等)命中断点时,会有一个绿色箭头指向一行代码。那个箭头指向当线程从当前函数返回时要执行的下一条语句。也许这个绿色箭头指向你写“s = 1”的那一行,但实际上有问题的代码是它上面的那一行。现在我看不到你的代码,所以我不能确切地知道,而且我没有足够的代表来发表评论——但这很容易在下次断点时检查。

于 2014-12-16T01:13:31.290 回答
0

我愿意打赌这s不是一个“简单”的变量。我更有可能相信它是这样的:

class Foo;
    int s;
    void Bar() {
        s = 1;
    }
};

当然,它看起来像一个简单的s=1陈述,但实际上它是一个this->s=1陈述。如果this是无效指针,this->s也不是正确的变量。

于 2010-06-17T14:08:20.060 回答