Visual Studio 2015でC#プログラムをデバッグしています。Visual Studio 2015でデバッグ中に最後に実行されたステートメントを知ることはできますか?
tryステートメントのコードのどこかでcatchステートメントにジャンプします。
実行された最後のステートメント、つまり例外を発生させるステートメントを見つけるにはどうすればよいですか?
ありがとうございました。
Visual Studio 2015でC#プログラムをデバッグしています。Visual Studio 2015でデバッグ中に最後に実行されたステートメントを知ることはできますか?
tryステートメントのコードのどこかでcatchステートメントにジャンプします。
実行された最後のステートメント、つまり例外を発生させるステートメントを見つけるにはどうすればよいですか?
ありがとうございました。
try節の各ステートメントにブレークポイントを設定することも、Visual Studioが提供する機能を使用することもできます。下のどこかに(あなたのコンソールがどこにあるか)どこかに "Call Stack"というウィンドウがあります。これは、最後のステートメントが実行された順序を示します。
'catch'ブロックに入っているとき、スタックトレースウィンドウは例外をスローしたステートメントと同じようにスタックを表示しません。 –
あなたのスタックトレースを見てみましょう:
static void Main(string[] args)
{
try
{
Console.WriteLine("starting");
throw new Exception("Testing");
Console.WriteLine("unreachable");
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
throw;
}
}
出力:
が始まる
のSystem.Exception:ConsoleApplication1.Program.Mainで のテスト(文字列[] args)をC:¥Users¥dfield¥Documents¥Visual Studio 2015¥Projects¥ConsoleApplication1¥ConsoleApplication1¥Program.csにあります。
ライン161はthrow new Exception("Testing");
あり、この方法にはいくつかの例外(ほら)おそらくあるある - などStackOverflowException
やOutOfMemoryException
が発生した場合などは、(私が思う)、またはカスタム例外を削除するか、そうでない場合は変更している場合StackTrace
オブジェクトはException
にあります(私は、これを見ることができないはずのクライアントに返されるスタックトレースを難読化するためにこれを行っています)。また、InnerException
のスタックトレースを見なければならないかもしれません。使用してintに文字列を変換しようとしました:
例:あなたは例外をキャッチすると
ありがとうございます。スタックトレースを示すウィンドウがありません。どうすればそのようなウィンドウを開くことができますか? – Tim
'catch'ブロックのエントリにブレークポイントを設定した場合、' ex'変数を調べ、そのスタックトレースを見ることができます。 –
また、__Locals__タブにも表示されますので、そこを調べたり、System.Diagnostics.Debug.WriteLine(ex.ToString()) 'などを使用して__Output__ウィンドウに表示してください –
、スタックトレース値を見て、それはあなたの例外は、例外の理由で起こっている場所についてのすべての情報を提供しますInt32.Parse( "Hello");例外がスローされますと、以下のようにスタックトレース:
System.Number.ParseInt32でSystem.Number.StringToNumber(文字列str、NumberStylesオプション、NumberBuffer &数、のNumberFormatInfo情報、ブールparseDecimal) (Stringを、NumberStylesスタイルで、Program.csの中のNumberFormatInfo情報System.Int32.Parseで) Test123で(文字列s)は ():行32
例外の_stackのtrace_はあなたを示しています。 –
デバッガを使用して、エラーをスローしている場所を見つけるまで、各メソッドをステップスルー(F5)および(F11)に挿入します。 – Mark