我现在正在尝试使用这个Application Verifier调试工具,但我被困住了,首先:它在一个简单的变量设置行(s = 1;例如)的行中断了程序
其次,现在当我在调试器下运行这个程序时,我的程序似乎改变了它的行为:我正在绘制图像,现在其中一种颜色已经改变了o_O,我没有画出的图像的所有部分,将#C0000CD的颜色更改为#000000,并且我已将默认颜色设置为零,仍然会变为#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).
答案 0 :(得分:1)
通常,当调试器内部出现断点(通过AV或未处理的异常等)时,会出现一个指向一行代码的绿色箭头。该箭头指向线程从当前函数 返回时要执行的 next语句。也许这个绿色箭头指向你写“s = 1”的行,但实际上有问题的代码是它上面的行。现在我看不到你的代码,所以我无法确切地知道并且我没有足够的代表来发表评论 - 但是下次断点被击中时这很容易检查。
答案 1 :(得分:0)
我愿意打赌s
不是一个“简单”的变量。我更有可能相信它是这样的:
class Foo;
int s;
void Bar() {
s = 1;
}
};
当然,它看起来像一个简单的s=1
语句,但实际上它是一个this->s=1
语句。如果this
是无效指针,则this->s
也不是适当的变量。