今日のワンポイント : "マイ コードのみ" とは- #289

[ツール]、[オプション]、[デバッグ]、[全般] の順にクリックすると表示されるページには、['マイ コードのみ' 設定を有効にする] オプションがあります。

Enable Just My Code

当然のことながら、他人のものではないコードは、あなた自身のコードです。ただし、これはだれにも区別することができません。私にわかるのは、このチェック ボックスをオンまたはオフにするとどうなるか、ということだけです。とはいえ、まず "マイ コードのみ" とはどういう意味なのかを説明しましょう。

MSDN ドキュメントの説明によると、"マイ コードのみ" を設定した場合、非ユーザー コードは非表示になり、デバッガー ウィンドウには表示されません。ステップ実行すると、デバッガーは非ユーザー コードをステップ実行しますが、非ユーザー コード内では停止しません。

これはわかりやすい説明ですが、非ユーザー コードとはどのようなコードなのでしょうか。私が知る限りでは、次のような状態のコードはマイ コードとは見なされません (つまり非ユーザー コードと見なされます)。

  •  コードが最適化されている
  • コードにシンボルが含まれていない
  • コードに DebuggerNonUserCodeAttribute 属性が設定されている

具体例を挙げて説明します。

ソリューションに ClassLibrary1 と ConsoleApplication1 の 2 つのプロジェクトが含まれているとします。コンソール アプリケーションはクラス ライブラリを呼び出し、シンプルな "hello world" 文字列を取得してコンソールに表示します。ビルド時に最適化が行われるように ClassLibrary1 にマークするとします。すると、ブレークポイントを Console.WriteLine ラッパー メソッドに挿入し、ステップ インを試みた場合に、拒否されるようになります (ショートカットを使用してステップインを実行するには、F11 キーではなく、F10 キーを押してください)。

Just My Code causes F11 to act like F10 for non-user code

Technorati タグ : VS2005TipVS2008Tip

投稿 : 2008 年 8 月 12 日 (火) 3:00 AM saraford

Sara Ford さんの Web ログ - https://blogs.msdn.com/saraford/archive/2008/08/12/did-you-know-what-is-just-your-code-289.aspx より。

分類 : Visual Studio 2008 ワンポイント