2011-01-17 9 views
3

現在、28,000台のワークステーションに.NETアプリケーションが配備されています。これらのすべてにおいて、そのプロセスは、ユーザーログイン時にHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runレジストリキーから起動されます。 上では、ほとんどの場合、これらのワークステーションのうちが正常に動作しますが、この方法では動作するとクラッシュします。面倒なことに、ログイン後に手動で起動すると正常に動作し、クラッシュは発生しません。ログイン時にHKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Runから実行されるプロセスにWinDbgを添付しますか?

WinDbgを実行してこのプロセスに接続して、メモリダンプを取得しようとする時間と、少なくとも何が起こっているのかを知ることを試みています。

どうすればいいですか?私が知っている限り、アプリケーションの自動起動の順序はWindows(WindowsXP SP3の場合)で保証されていないため、これは簡単ではありません。

答えて

2

これを実行する方法の1つはGFlagsです。プロセスが起動すると、Gflagsにデバッガにアタッチするよう指示することができます。

プロセスが終了または例外をスローすると、デバッガスクリプトをコマンドラインで渡してメモリダンプを取得できます。

+0

前にgflagsを見たことがありません - ありがとう - これは完璧です。 – GodEater

1

これを実現する1つの方法は、問題を示すワークステーションにアプリケーションのカスタムビルドを展開することです。このビルドでは、デフォルトのJITデバッガを起動するためにできるだけ早くDebugger.Break()を呼び出す必要があります。

WinDbgがデフォルトのJITデバッガとして登録されるようにset the necessary registry keysにすると、起動時にアプリケーションにアタッチしてメモリダンプを取得する必要があります。

+0

いいアイデアですが、ベンダー(つまりMicrosoft!)が提供するアプリケーションなので、コードはありません。彼らは私に彼らのサポートの人々にメモリダンプを供給してほしい。 – GodEater

関連する問題