4

Visual Studio がインストールされていないクライアント マシンに C# Windows フォーム アプリをインストールしました。

アプリケーションが実行されると、すぐにクラッシュし、次のようなダイアログが表示されます

ProgramX が動作を停止しました。問題が発生したため、プログラムが正しく動作しなくなりました。プログラムを閉じてください。」

ダイアログの唯一のボタンは「プログラムを閉じる」です。

問題を診断できるように、例外メッセージとスタック トレースを確認したいと思います。

「windbg」に付属の .Net SDK をインストールしてみました。私はwindbgでプログラムを実行し、「CLR例外」と言うように管理しました。ただし、windbg に例外メッセージまたはスタック トレースを出力させることができません。多くのいじりの後でも、DLL 読み込みメッセージのため、SOS または PSSCOR2 は読み込まれません。もっと簡単な方法があるはずです!

(回答にwindbgが含まれる場合は、このアプローチで試行して失敗したため、詳細な手順を含めてください。)

アプリケーションは .Net 3.5 アプリです。マシンには .Net 3.5 と .Net 4 がインストールされています。イベント ログには何もありません (私が見つけたもの)。

4

3 に答える 3

4

ソースコードにアクセスできない場合は、問題があります。例外はWindowsイベントで終了する必要があります。例外が抑制されている可能性があります。

ソースコードにアクセスできる場合は、開始コードをTRY \ CATCHとCATCHで囲み、例外情報をファイルに出力できます。

  • ex.message
  • ex.InnerException.Message
  • ex.StackTrace

コード

        try
        {
            //Your code
        }
        catch (Exception ex)
        {
            //Log info to a file in same directory
        }
于 2012-06-19T14:19:58.267 に答える
3
  • 次のイベントにハンドラーを追加することにより、コード内の 1 か所で未処理の例外をキャッチできます。その後、ログに記録したり、他のアクションを実行したりできます。

    AppDomain.UnhandledException

  • タスク マネージャーからクラッシュ ダンプを生成し (Processesタブ内のエントリを右クリックして を選択Create Dump File)、WinDbg でロードできます。!peコマンドを実行すると、例外が表示されます。ビルドの PDB ファイルと、クラッシュしたマシンの正しいバージョンの SOS DLL が必要です。

于 2012-06-21T21:09:22.177 に答える
2

ADPlusを使用してアプリのクラッシュダンプを取得し、クラッシュダンプを開発マシンのWinDbgにロードします。

http://blogs.msdn.com/b/webdav_101/archive/2008/09/04/howto-generated-a-crash-dump-with-adplus.aspx

http://support.microsoft.com/kb/286350

リモートデバッグを設定することもできます(ソースコードがあると仮定します)。

http://msdn.microsoft.com/en-us/library/y7f5zaaa.aspx

于 2012-06-19T14:25:42.537 に答える