1

概要: XMLファイルを取り込んで新しいプロセスを開始してXMLファイルの統計計算を実行するC#GUIをデバッグしています。何らかの理由でプロセスは実行の途中で終了し、明らかなエラーは発生しません。Windowsのメッセージボックスが表示され、「動作を停止しました。Windowsは解決策を探しています」と表示されます。

私が試したこと:

  • アプリケーションの実行を追跡するためにログに書き込んで、どこで失敗したかを確認しようとしましたが、プロセスはプログラムのさまざまな時点で終了しているようです。
  • Visual Studioデバッガーを使用してプログラムの実行を追跡しようとしましたが、同様に
    プロセスは異なる時間に終了します。

私が知りたいこと:

  • 他に試すことができる無料のデバッガーはありますか?
  • プロセスの実行中にプロセスの現在の状態を確認するために呼び出すことができる呼び出しはありますか?
  • 誰かが他に試すことを考えることができますか?

どんな助けでも素晴らしいでしょう。ありがとう。

4

3 に答える 3

6

Visual Studioのデバッガーは、これまでに作成された中で最高のデバッグツールです。他のものを探すよりも、それを使用する方法を学ぶことに集中する必要があります。

質問に答えるには、Debug>Exceptions(CTRL + D CTRL + E)に移動し、のThrown横のボックスにチェックマークを付けCommon Language Runtime Exceptionsます。これにより、例外がスローされるたびに、それを静かに飲み込むか完全に無視するかに関係なく、デバッガーが中断します。これは、問題を特定するのに役立ちます。

于 2011-06-23T14:21:48.007 に答える
2

いくつか追加する

Debugger.Break();

コード内の戦略的なポイントでステートメントを使用してデバッガーを強制的に実行すると、このような問題をトラブルシューティングするのに便利な方法になります...

それらを取り出すことを忘れないでください!

于 2011-06-23T14:21:38.730 に答える
1

イベントに登録して、問題が発生するかどうかを確認できます。AppDomain.CurrentDomain UnhandledException

メインフォームが表示される前に、Program.csファイルに次のようなものを追加します。

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(UnhandledExceptionEventOccured);

private static void UnhandledExceptionEventOccured(
    object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if(ex != null)
    {
        MessageBox.Show(ex.StackTrace, ex.Message);
    }
}

もう1つのオプションは、WinDbgを介してアプリケーションを実行することです。

于 2011-06-23T14:24:09.550 に答える