1

私は今、この Application Verifier デバッグ ツールを使用しようとしていますが、まず第一に、単純な変数セット行 (s = 1; など) でプログラムを中断します。

次に、このプログラムをデバッガーで実行すると、プログラムの動作が変わったようです。画像を描画していますが、色の 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ステートメントです。そして ifthisは無効なポインタでthis->sあり、適切な変数でもありません。

于 2010-06-17T14:08:20.060 に答える