0

デバッグが必要な大規模な関数 (1500 行のコード) があります。最終的には分解してみますが、利用可能なツールは十分ではありません。

したがって、当面必要なのは、DC のディスプレイへの書き込みのキャッシュを無効にして、これをすばやくデバッグできるようにすることです。これを達成するために設定できるフラグはありますか?

4

2 に答える 2

1

パフォーマンスの最適化として、GDI はバッチ処理を実行します。GDI に操作を実行するように要求しても、すぐに実行されるとは限りません。代わりに、それをバッファーに格納し、そのバッファーがいっぱいになると、バッチがフラッシュされ、操作が実行のためにカーネル モードに送信されます。これは、GDI が既定で行うことであり、通常、この操作モードを変更する理由はありません。

場合によっては、GDI が実行するバッチ処理の量やフラッシュが発生するタイミングを制御する必要があります。これは、オフスクリーン DC にレンダリングしていて、その情報をメモリから読み戻す必要があるため、またはデバッグ目的のためです。

バッチ処理を制御するために使用できる 2 つの API 呼び出しがあります。バッチ操作のフラッシュを開始するには、 を呼び出すことができますGdiFlush。この API が返されると、すべての GDI 操作が完了まで実行されたことが保証されます。実行されるバッチ処理の量を制御したい場合は、 を使用できますGdiSetBatchLimit。バッチ処理を完全に無効にするには、 を呼び出すだけGdiSetBatchLimit(1)です。

于 2013-10-17T17:03:26.183 に答える
1

私のやり方:

  1. 最も簡単な方法は、2 台のモニターを使用することです。
  2. リモート デバッグも完璧で、同じマシンでのデバッグよりもはるかに優れています。これは、仮想マシンでも行うことができます。

ダブル バッファリング (CMemDC の使用) を無効にする必要があります。

于 2013-10-17T05:59:59.763 に答える