4

Visual Studio 2012でデバッグ/実行されている、未処理の例外が表示され、プログラムが停止する(プログラムにエラーがある)プログラムを処理するにはどうすればよいですか?例外が発生する前に、プログラムのスタックを前の行に戻す方法はありますか?

今のところ、プログラムに例外があるときはいつでも、プログラムを再起動してキャッチする必要があります(私の場合、これには長い時間がかかります)。Visual Studioで例外がスロー/表示された後、例外行の前の前の行に戻り、そこから移動したいと思います。

VisualStudioでこれを行う方法はありますか?コマンドやボタンはありますか?

このような:

line 1: object _hello = GetSomeObject()

line 2: if(_hello.Property == true) {
} // exception line - _hello is null

デバッグを停止せずに、同じインスタンスの1行目に戻りたい。

4

5 に答える 5

8

例外がスローされたら、バックトラックできません。最初にコールスタックを使用して例外がどのように発生するかを識別し、次にその直前にブレークポイントを設定する必要があります。

次にコードをデバッグするときに、デバッガーがブレークポイントに到達したときに、矢印ポインターを前の行までドラッグして、実行をその行に戻し、ウォッチ/クイックウォッチなどを使用できます。

コールスタックには、VS2012で[デバッグ]メニュー->[その他のウィンドウ]->[コールスタック]からアクセスできます。

呼び出しスタックを確認すると、プログラムがどのように例外条件に到達するか、したがってブレークポイントをどこに設定するかがわかります。状況によって異なりますが、コールスタックとインテリセンスを使用するだけで、コードをステップ実行せずに問題を解決できる場合があります。

于 2013-03-03T22:57:31.763 に答える
2

コールスタックの使用の詳細については、ここを参照してください。

コールスタックの一番上の行は、例外が発生する場所です。

上から2行目をクリックすると、例外行の直前に発生した関数またはプロシージャの呼び出しを表示できます。

ここに画像の説明を入力してください

于 2013-03-03T23:06:14.257 に答える
2

戻りたい行を右クリックして、「次のステートメントの設定」を選択します(Ctrl + Shift + F10)。これにより、通常、最初からやり直すことなく、その場所に戻ることができます。これは1回しかできないと言われていますが、あまり頻繁には使用しないので、理由がわかりません。

于 2013-03-03T23:11:00.287 に答える
0

使用しているVS2012のSKUはわかりませんが、IntelliTraceを搭載している場合は、ぜひチェックしてください。

于 2013-03-03T23:17:33.413 に答える
0

メニューの[デバッグ]->[例外]に移動します。探している例外については、[スロー]チェックボックスをクリックしてください。プログラムの実行中

于 2016-08-01T15:51:00.573 に答える