皆さんごきげんよう。本記事は、2021 年 7 月 15 日(米国時間)ポストされた Debug code with force run to cursor の意訳のようななにかとなります。内容については下記が原文で、正となります。
※ ちょっと前の記事ですが、いい機能なので紹介させてください
更新したコードのテストなどをしていて、目標の行に至るまでに、いらん First Chance 例外や、ブレーク ポイントによってデバッグが中断された経験はありませんか?このような場合には、ブレークポイントを削除または無効にするか、目的のコード行に到達するまで無になって淡々と [続行] を押し続ける修行を余儀なくされた経験はだれでもお持ちかと思います。
ブレーク ポイントを一回消しても、後のためにまた復活させようとして場所がわからなくなる件など。
そんなわけで、Visual Studio 2022 Preview 2 から、このような場合に血涙を流さずに目標の行に到達できる、カーソル行の前まで強制実行
(force run to cursor) を使用できるようになりました。これは、カーソル行の前まで実行
と似ていますが、間のブレーク ポイントをキープしながらも、デバッガーはカーソルのあるコード行に到達するまで、ブレーク ポイントを颯爽とスキップしてくれます。また、First chance 例外もスキップしてくれます。やったね。
全ブレーク ポイントをスキップしてアプリケーションを爆速デバッグ
ソース コードやコール スタック ウィンドウで、ブレークさせたい行を選択し、右クリックして Force Run to Cursor
を選択すると、カーソル位置まで速攻実行されていきます。
アプリケーションは Visual Studio デバッガーをアタッチし、カーソル位置で一時停止します。実行中に発生したブレーク ポイントや First Chanve 例外は一時的に無効になり、その時点でのプログラムの状態を評価することができます。Force Run To Cursor が実行された後は、セットされたブレーク ポイントや、First chance 例外などの扱いは元の状態に戻ります。
ここでは簡単な例を示します。Force Run To Cursor
は実行を継続し、強制実行した 8 行目でブレークします。createMessage()
関数と SendMessage()
関数内のブレークポイントはスキップされます。
ポイント&クリックによるカーソル行への強制実行
アクティブなデバッグ セッションでは、Shift
キーを押しながらマウスをポイントすると、コード行の横に Force run execution to here というツールチップ付きの緑色のグリフが表示されます。
上記と同じく、ここでは緑のグリフボタンを使って Force run execution to here を実行しています。
特記事項
Force Run To Cursor で一時停止するためには、コードの行が到達可能である必要があります。要は、対象行は、アプリケーションが実行されているときに呼び出される条件/関数/アクションに属するものでなければなりません。
対象行に到達する前に未処理の例外が発生した場合、プログラムはすぐに停止してします。
また、以下のような場合には、Force Run To Cursor モードから抜け出すことができます。
- デバッグの停止
- 再有効化後に例外が発生した場合
- 中断を選択した場合(たとえば、ツールバーの一時停止ボタンを選択した場合など)
- 新しいブレークポイントを設定する
- 既存のブレークポイントを再有効化したのち、そのブレークポイントにヒットする
まとめ
カーソル行まで強制実行する機能は、ブレーク ポイントをスキップしたいときなど、アプリケーションをデバッグする際の便利な方法です。今すぐ Visual Studio Preview 2 をダウンロードしてお試しください。ご質問やご意見は、Developer Community でフィードバックいただくか、@VS_Debugger まで、ツイートください。
■ Visual Studio 2022 Preview のダウンロードはこちらから
以上、Harshada さんからでした。
それではみなさん、ごきげんよう。