3

VS2012 でアプリをデバッグしていてクラッシュすると、入力 (マウスとキーボード) が極端に遅くなり始め、fps が約 0.3 以下に低下し、3 秒待たないとマウスを動かすことさえできません... 唯一の解決策デバッグを終了するShift-F5を実行することであり、すべてがうまくいきます。

さらに興味深いことに、唯一の遅れは入力であり、背景全体が完全に正常に機能し、テキスト キャレットが通常の速度で点滅し、マウスがボタンの上に移動するとツールチップが適切にアニメーション化されます。

プロジェクトを allegro 4.2 でコンパイルしています (使用する必要があります。理由を説明するには時間がかかりすぎます)。

拡張機能はありません。デバッグを処理できるはずのかなり高速なPCです...

どんな解決策にも興味があります。それは汚い/ハックかもしれません...もちろん、必要に応じてさらに情報を提供できます。

助けてくれてありがとう。

編集:フォーラムを読んで、「自動」ウィンドウまたはそのようなもの(正確には覚えておらず、もう見つけることができません)に関する情報をいくつか見つけました。これは、いくつかの「バックグラウンドタスク」を実行しており、ラグを引き起こしています...別のコアで実行するとそれが修正されると思いますか?

4

2 に答える 2

4

最近、ゲームのデバッグ中に次のような問題が発生しました。

  • ブレークポイントに到達し、デバッグのためにプログラムを停止します。
  • いずれかのキーを押すと、「処理」に約 1 秒かかります。バッファリングされ、現在アクティブなウィンドウに次々とゆっくりと送信されます。

私の場合、アプリケーションは低レベルのキーボードフックをインストールしましたSetWindowsHookEx(WH_KEYBOARD_LL, ...). これを削除した後 (必要に応じて !NDEBUG ビルドのみ)、入力ラグはなくなりました。

アプリケーションが停止している間、フックはまったく応答できず、最終的にシステムはタイムアウト後にそれをスキップするとHKEY_CURRENT_USER\Control Panel\Desktop\LowLevelHooksTimeout:DWORD思います。実際、受け入れられた回答のリンクはこの問題に言及していますが、修正する前にリンクが機能しなくなったため、ここでその核心を説明すると思いました。

アプリケーションまたは依存関係でそのようなフックを見つけて、それを削除すると役立つかどうかを確認してください。これはマウスでも発生するとおっしゃっていたので、(低レベルの) マウスフック ( WH_MOUSE_LL) も確認してください。利用可能なフックはMSDN にリストされています

于 2020-09-22T23:01:26.927 に答える