/JMC (マイ コードのみデバッグ)

Visual Studio デバッガーでのネイティブ "マイ コードのみ" デバッグのコンパイラ サポートを指定します。 このオプションは、Visual Studio でシステム、フレームワーク、ライブラリ、その他の非ユーザー呼び出しをステップ オーバーし、呼び出し履歴ウィンドウでそれらの呼び出しを折りたたむことができるようにする、ユーザー設定をサポートします。 コンパイラ オプションは /JMC 、Visual Studio 2017 バージョン 15.8 以降で使用できます。

構文

/JMC[-]

解説

Visual Studio の "マイ コードのみ" の設定では、Visual Studio デバッガーがシステム、フレームワーク、ライブラリ、その他の非ユーザー呼び出しをステップ オーバーするかどうかを指定します。 /JMCコンパイラ オプションを使用すると、ネイティブ C++ コードでマイ コードのみをデバッグできます。 /JMC を有効にすると、コンパイラによって、ヘルパー関数 __CheckForDebuggerJustMyCode の呼び出しが関数プロローグに挿入されます。 このヘルパー関数により、Visual Studio デバッガーでの "マイ コードのみ" のステップ操作をサポートするフックが提供されます。 Visual Studio デバッガーで "マイ コードのみ" を有効にするには、メニュー バーで [ツール]>[オプション] を選び、[デバッグ]>[全般]>[マイ コードのみを有効にする] のオプションを設定します。

/JMC オプションを使用するには、__CheckForDebuggerJustMyCode ヘルパー関数を提供する C ランタイム ライブラリ (CRT) にコードをリンクする必要があります。 プロジェクトが CRT にリンクしていない場合、リンカー エラー "LNK2019: 外部シンボル __CheckForDebuggerJustMyCode は未解決です" が表示されることがあります。 このエラーを解決するには、CRT にリンクするか、オプションを /JMC 無効にします。

/JMC オプションを有効にすると、PDB ファイルに余分な行番号情報が注釈付けされます。 Visual Studio 2019 バージョン 16.8 より前のバージョンでは、この情報は、コード カバレッジ レポートに、15732480 (0xF00F00) または 16707566 (0xFEEFEE) の行として表示される可能性があります。 これらの架空の行番号は、非ユーザー コードからユーザー コードを示すマーカーとして使用されます。 これらの想定外の行番号なしでコード カバレッジ レポートに非ユーザー コードを含めるには、/JMC- オプションを使用してコードをビルドします。

既定では、 /JMC コンパイラ オプションはオフです。 ただし、Visual Studio 2017 バージョン 15.8 以降では、ほとんどの Visual Studio プロジェクト テンプレートでこのオプションが有効になっています。 このオプションを明示的に無効にするには、コマンド ラインで /JMC- オプションを使用します。 Visual Studio で、プロジェクトの [プロパティ ページ] ダイアログ ボックスを開き、[構成プロパティ]>[C/C++]>[全般] プロパティ ページの [[マイ コードのみ] のデバッグをサポートする] プロパティを [いいえ] に変更します。

詳しくは、Visual Studio で "マイ コードのみ" を使用してユーザー コードだけをデバッグするかどうかの指定に関する記事の「C++ での "マイ コードのみ"」と、Visual C++ チームのブログ記事「Visual Studio での C++ の "マイ コードのみ" のステップ実行に関する発表」をご覧ください。

Visual Studio 開発環境でこのコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。 詳細については、Visual Studio での C++ コンパイラとビルド プロパティの設定に関する記事を参照してください。

  2. [構成プロパティ]>[C/C++]>[全般] プロパティ ページを選択します。

  3. [[マイ コードのみ] のデバッグをサポートする] プロパティを変更します。

このコンパイラ オプションをコードから設定するには

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文