5

そこで停止したくないため、ポインターを出力してから続行するブレークポイントを設定しました。

 bu 410cc8 ".printf \"Class: %08lX   Filebuffer: %08X\\n\", eax, edx; g"

これに関する問題は、次のように、シングルステップでそのようなブレークポイントが発生した場合です。

 1                 mov     eax, [ebp+var_10]
 2                 lea     edx, [eax+2Ch]
 3                 mov     eax, ebx
 4                 call    ReadFileFkt_2
 5                 mov     eax, [ebp+var_10]

したがって、4 行目にいて、それをステップオーバーすると、上記のブレークポイントが発生し、メッセージが出力されます。しかし、ブレークポイントで「g」を使用して続行するため、デバッガーは戻ってこないため、単一のステップが消去されます。

「g」を使用しないと、ブレークポイントにヒットし、デバッガーがそこで停止するため、元の場所に戻る方法を追跡する必要があります。もちろん、呼び出しの後にブレークポイントを設定することもできますが、コードの他の部分でもこれを行うことを覚えておく必要があります。これは、呼び出し元の階層の奥深くからいつブレークポイントが起動されるかがわからないためです。

4

1 に答える 1

10

'g' (移動) の代わりに 'gc' (条件付きブレークポイントから移動) を使用します。このコマンドは、あなたが抱えている問題のために特別に設計されました。

于 2013-10-12T18:49:31.437 に答える