3

私が現在取り組んでいるプログラムは、AppHangB1問題イベントでハングすることがあります。私はそれを特定の一連のアクションにたどりましたが、コードをステップスルーするたびにそれ自体が現れないため、それは一種の特異なバグのようです。また、プログラムがハングすると、プログラムを一時停止してVisualStudioのどこにハングしているかを確認できなくなります。このアプリケーションでは多くのことが起こっているので(管理されていない相互運用、マルチスレッドなど)、特定のアプリケーションで間違っていることがいくつもある可能性があります。

私は自分の問題を解決してくれる人を探していません。どのような種類のものがこのタイプのハングを引き起こす可能性があるのか​​疑問に思っています。Googleでいくつかのヒットを見つけましたが、何も役に立ちませんでした。問題を特定するのに役立つ可能性のある.NETアプリケーションのデバッグトリックも役立ちます。

4

1 に答える 1

7

AppHangB1 イベントは、UI スレッドが数秒間メッセージに応答せず、ユーザーがそれを終了しようとしたときにトリガーされます。コード内のビジー ループ、UI スレッドでのネットワークまたはディスク I/O の実行、実行時間の長いタスクを実行しているバックグラウンド スレッドによって保持されているロックで UI スレッドがブロックされているなど、ハングはほぼすべての原因で発生する可能性があります。

ハングの時点で Visual Studio が中断できないことは少し心配です。マネージのみのデバッグまたは混合モードのデバッグ用にアタッチしていますか? Windbg ( http://www.microsoft.com/whdc/devtools/debugging/default.mspx ) を使用して非侵襲的にプロセスにアタッチし、ハングしたスレッドのスタック トレースを取得してみてください (見たい!clrstack を使用してマネージド スタック トレースを取得する)。Windbg の学習曲線は非常に急勾配であるため、Visual Studio でデバッグできるダンプを収集したいだけかもしれません。

于 2009-04-01T18:02:39.077 に答える