> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Visual Studio でリモート Windows デバイス上の PC プロジェクトをデバッグする

> デプロイとデバッグ用の GDK マーケットプレース拡張機能を使用して、Visual Studio 2022 デバッガーをリモート Windows マシン上で実行中の PC ゲームビルドにアタッチします。

<Info>XBOX PC Toolbox アプリはプレビュー版です。Windows 上の [Microsoft Store](https://aka.ms/toolboxinstaller) からダウンロードしてください。</Info>

[XBOX PC Remote Tools](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/pc-dev/overviews/remote-gamedev-tools) には、リモート Windows デバイス上で実行されているゲームに Visual Studio 2022 デバッガーをアタッチする機能が含まれています。開発 PC とリモート Windows デバイス間のデバッグ トラフィックはすべて暗号化されます。デバッガーをアタッチする機能は、公開の Visual Studio Marketplace で入手できる [Visual Studio 2022 拡張機能](https://marketplace.visualstudio.com/items?itemName=XboxGDK.Microsoft-Xbox-PC-Remote-Debugger)によって提供されます。

デバッグを行う前に、[クイック スタート ガイド](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/pc-dev/tutorials/get-started-with-remote-devices/remote-win-gamedev-quickstart)で説明されている手順を使用して、開発 PC とリモート Windows デバイスをプロビジョニングしてペアリングする必要があります。

ペアリングとプロビジョニングが完了したら、[Visual Studio の拡張機能マネージャー](https://learn.microsoft.com/visualstudio/ide/finding-and-using-visual-studio-extensions?view=visualstudio)を使用して XBOX PC Remote Debugger 拡張機能をダウンロードします。
ペアリングとプロビジョニングが完了したら、[Visual Studio の拡張機能マネージャー](https://aka.ms/XboxPCRemoteDebugger)を使用して XBOX PC Remote Debugger 拡張機能をダウンロードします。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_extension.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=b5beb1a3b79d24e2963ece62f6bbfe6d" alt="Visual Studio Marketplace の XBOX PC Remote Debugger 拡張機能" width="1152" height="386" data-path="images/gdk/tools/xbox_pc_remote_debugger_extension.png" />

## ゲームのプロジェクトで F5 でのデプロイおよびデバッグを有効にする

Visual Studio 用の XBOX PC Remote Debugger 拡張機能は、リモート Windows デバイス上での C++ プロジェクトのデプロイおよびデバッグの完全な「F5」統合をサポートしています。<kbd>F5</kbd> キーを押すと、プロジェクトがビルドされ、必要に応じてリモート デバイスにデプロイされ、ゲームが一時停止状態で起動され、XBOX PC Remote Debugger がアタッチされ、その後デバッガー配下でゲームが再開されます。

[XBOX PC Remote Debugger Visual Studio 拡張機能](https://marketplace.visualstudio.com/items?itemName=XboxGDK.Microsoft-Xbox-PC-Remote-Debugger)をインストールした後、F5 リモート デプロイおよびデバッグを使用する前に、次のことを確認してください。

1. [クイック スタート ガイド](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/pc-dev/tutorials/get-started-with-remote-devices/remote-win-gamedev-quickstart)で説明されている手順を使用して、開発 PC とリモート Windows デバイスがプロビジョニングされ、ペアリングされている必要があります。

2. Microsoft Visual Studio Debug Monitor (`MSVSMON.EXE`) がリモート デバイスにインストールされている必要があります。`MSVSMON.EXE` は、[XBOX PC Toolbox アプリケーション](/tools/tools-pc/xboxpctoolbox/xboxpctoolbox)によって自動的にインストールされます。あるいは、リモート デバイス上の管理者プロンプトから WinGet を使用してインストールすることもできます。

```
   winget install Microsoft.VisualStudio.2022.OnecoreMsvsmon
```

3. リモート デバイス上で [`wdEndpoint.exe`](/tools/tools-pc/commandlinetools/gr-wdEndpoint) が実行されている必要があります。`wdEndpoint.exe` は、[XBOX PC Toolbox アプリケーション](/tools/tools-pc/xboxpctoolbox/xboxpctoolbox)によって自動的にインストールされて開始されます。あるいは、リモート デバイス上のコマンド プロンプトから WinGet を使用してインストールすることもできます。

```
   winget install Microsoft.Gaming.RemoteIterationEndpoint 
```

WinGet を通じてインストールした後は、`wdEndpoint.exe` を手動で開始してください。

### MSBuild プロジェクトへの F5 リモート デバッグ サポートの追加

MSBuild を使用するプロジェクトで F5 統合を有効にするには、次の XML を `.vcxproj` ファイルに追加します。最後の `</ItemDefinitionGroup>` 要素の後、ソース ファイルの `<ItemGroup>` セクションの前に配置します。

```xml theme={null}
<ItemGroup>
  <ProjectCapability Include="Gaming.Xbox.PC.Remote" />
</ItemGroup>
<Import Condition="'$(XboxPCRemotePath)'!='' AND Exists('$(XboxPCRemotePath)XboxPCcppDebugger.props')"
  Project="$(XboxPCRemotePath)XboxPCcppDebugger.props" />
<ItemGroup>
  <PropertyPageSchema Condition="'$(XboxPCRemotePath)'!=''" Include="$(XboxPCRemotePath)XboxPCcppDebugger.xml" />
</ItemGroup>
```

<Note>最新バージョンの [Microsoft GDK テンプレート](https://aka.ms/gdktemplates)では、新しいプロジェクトを作成する際にこの統合を含めるかどうかを確認するメッセージが表示されます。</Note>

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_template_prompt.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=a620c5d24191e498dba4589f65921d57" alt="新しいプロジェクトでリモート デバッグを有効にするプロンプト" width="879" height="567" data-path="images/gdk/tools/xbox_pc_remote_debugger_template_prompt.png" />

デプロイを有効にするには、**\[プロジェクト] > \[プロパティ] > \[構成マネージャー]** に移動し、目的の構成の **\[デプロイ]** オプションをオンにします。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_deploy_checkbox.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=ba9f7ae896391e1f7e9415b60f472c40" alt="構成に対するデプロイの有効化" width="696" height="435" data-path="images/gdk/tools/xbox_pc_remote_debugger_deploy_checkbox.png" />

**F5** キーを押す前に、デバッグ ツール バーまたはプロジェクトのプロパティ ページを使用して、デバッガーを **\[XBOX PC Remote Debugger]** に設定します。デプロイとデバッグを構成するために、いくつかのプロパティが用意されています。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_property_page.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=12b098d60639fc9733dd2c9bf4e3ee50" alt="XBOX PC Remote Debugger のプロパティ" width="792" height="544" data-path="images/gdk/tools/xbox_pc_remote_debugger_property_page.png" />

* `Remote Command Arguments`。ゲームに渡すコマンド引数のリスト。

* `Deployment Directory`。リモート Windows デバイスにデプロイする開発 PC 上のディレクトリ。既定は `$(Outdir)` です。

* `Remote Folder`。リモート Windows デバイス上でゲームがデプロイされるフォルダー。フォルダーは *Common Root* を基準とした相対パスです。*Common Root* の詳細については、[`wdEndpoint.exe`](/tools/tools-pc/commandlinetools/gr-wdEndpoint) のトピックを参照してください。

* `Remote EndPoint Name`。標準の Windows リモート デバッグと同様に、既定のリモート デバイスは開発者マシン自身です。`wdEndpoint.exe` が実行されているデバイス名に `Remote EndPoint Name` を更新してください。

* `File filter for deployment`。デプロイから除外するファイル セットを指定します。たとえば、`.pdb` ファイルをデプロイから除外することは一般的な慣行です。除外するファイル パターンのリストをセミコロンで区切って指定します (例: `*.pdb;*.ipdb;*.iobj;*.obj;*.pch;*`)。

**\[構成]** の **\[デプロイ]** チェック ボックスをオンにし、デバッガーの種類として **\[XBOX PC Remote Debugger]** を選択し、プロパティを入力した後、**F5** キーを押すと、ゲームがビルドされ、リモート Windows デバイスにデプロイされ、デバッガー配下で起動されます。

<Note>Visual Studio がゲームのシンボルを見つけられるように、シンボル パスの構成が必要な場合があります。**\[ツール]** メニューからアクセスできる **\[オプション]** ダイアログの **\[デバッグ]** 設定を使用して構成してください。</Note>

#### F5 リモート デバッガーのプロジェクトごとの既定値

XBOX PC Remote Debugger 設定の既定値は `XboxPCcppDebugger.props` ファイルによって設定され、Visual Studio プロジェクトのプロパティ ダイアログで設定に加えた編集はローカル マシンに「ユーザーごと」に保存されます。

各ユーザーがマシン上で設定しなくても済むように、vcxproj で別の既定値を提供するには、次のように MSBuild に追加します。

```xml theme={null}
<ItemGroup>
  <ProjectCapability Include="Gaming.Xbox.PC.Remote" />
</ItemGroup>
<Import Condition="'$(XboxPCRemotePath)'!='' AND Exists('$(XboxPCRemotePath)XboxPCcppDebugger.props')"
  Project="$(XboxPCRemotePath)XboxPCcppDebugger.props" />
<PropertyGroup>
  <RemoteGameshareFolder>MyGameTitle</RemoteGameshareFolder>
</PropertyGroup>
<ItemGroup>
  <PropertyPageSchema Condition="'$(XboxPCRemotePath)'!=''" Include="$(XboxPCRemotePath)XboxPCcppDebugger.xml" />
</ItemGroup>
```

### Visual C++ ランタイム (CRT) のデプロイ

リモート マシンでプログラムを実行するには、Visual C++ ランタイム ファイルが必要です。小売 CRT については、リモート マシンに Visual C++ REDIST パッケージをインストールすることでこれを行えます。デバッグ CRT については、これらのファイルをタイトルと一緒にデプロイする必要があります。

MSBuild でのシンプルな解決策は、プロジェクトの Global セクションに次のプロパティを追加することです。

```xml theme={null}
<CopyCppRuntimeToOutputDir>true</CopyCppRuntimeToOutputDir>
```

これにより、Visual C++ CRT が `OutDir` にコピーされます。`UseDebugLibraries` が true に設定されている場合はデバッグ版が使用され、それ以外の場合は Retail 版が使用されます。

### CMake プロジェクトへの F5 リモート デバッグ サポートの追加

Open Folder プロジェクト (CMake プロジェクトなど) の場合、F5 リモート デバッグのサポートは `.vcxproj` ファイルではなく `launch.vs.json` で構成します。

1. XBOX PC Remote Debugger サポートをインストールし、リモート Windows デバイスがプロビジョニングされて `wdEndpoint.exe` が実行されていることを確認します。

2. Visual Studio で CMake プロジェクト フォルダーを開きます。

3. **\[ソリューション エクスプローラー]** で **\[CMakeLists.txt]** を右クリックし、**\[デバッグ構成の追加...]** を選択します。

4. **\[XBOX PC Remote Debugger Folder]** を選択します。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_cmake_debug_configuration.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=f4f1ad1f89fb057f614d8f163a37d99d" alt="CMake プロジェクトへのデバッグ構成の追加" width="869" height="569" data-path="images/gdk/tools/xbox_pc_remote_debugger_cmake_debug_configuration.png" />

Visual Studio は、`Xbox PC Remote Debugger` の起動構成を含む `.vs\launch.vs.json` ファイルを作成します。

一般的な構成は次のようになります。

```json theme={null}
   {
     "version": "0.2.1",
     "defaults": {},
     "configurations": [
       {
         "type": "default",
         "name": "MyGame.exe",
         "project": "CMakeLists.txt",
         "projectTarget": "MyGame.exe",
         "deployDirectory": "${workspaceRoot}\\out\\build\\x64-Release\\bin",
         "deployExcludeFilter": "*.pdb;*.ipdb;*.iobj;*.obj;*.pch;*.ilk;*.exp;*.lib;*.winmd;*.appxrecipe;*.log;*.tlog;*unsuccessfulbuild;*.lastbuildstate;*.copycomplete",
         "remoteGameshareFolder": "MyGame",
         "remoteMachineName": "MyROGAlly",
         "targetName": "MyGame.exe",
         "args": [],
         "deployType": "GamingXboxPCRemoteDeploy"
       }
     ]
   }
```

5. 生成された構成の次のプロパティの値を更新します。

   * `deployDirectory`。デプロイするファイルを含むローカルの出力フォルダー。

   * `remoteGameshareFolder`。リモート デバイス上で作成または使用するフォルダー。

   * `remoteMachineName`。`wdEndpoint.exe` が実行されているリモート デバイスの名前。

   * `targetName`。デプロイ後に起動するゲーム実行可能ファイル。

6. 必要に応じて、次のプロパティを更新します。

   * `deployExcludeFilter`。デプロイから除外するファイル パターンのセミコロン区切りリスト。

   * `args`。ゲームの起動時に渡すコマンド ライン引数。

   * `disableDeploy`。デプロイをスキップし、デバッガーでの起動またはアタッチのみを行う場合に設定します。

7. ゲームをローカルでビルドしてから、デバッガーのツール バーから **\[CMakeLists.txt]** を選択し、**F5** キーを押すと、ゲームがリモート デバイスにデプロイされてデバッガー配下で起動されます。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_cmake_debug_toolbar.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=c0a5c9d225c7a0c1433e18e3bc8fa646" alt="デバッガーのツール バーから CMakeLists.txt を選択" width="684" height="92" data-path="images/gdk/tools/xbox_pc_remote_debugger_cmake_debug_toolbar.png" />

## リモート Windows デバイス上で実行されているゲームへの Visual Studio デバッガーのアタッチ

リモート デバイス上で既に実行されているゲームにデバッガーをアタッチするには、Visual Studio の **\[デバッグ]** メニューから **\[プロセスにアタッチ...]** を選択します。**\[接続の種類]** ドロップダウンから **\[XBOX PC Remote Device]** を選択し、**\[接続先]** テキスト ボックスにリモート デバイスの IP アドレスまたはホスト名を入力します。リモート デバイス上で実行されているプロセスの一覧が表示されます。デバッグしたいゲームを選択し、**\[アタッチ]** ボタンを選択します。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbox_pc_remote_debugger_attach.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=9af2fa1ec8dcaf6e5709e9a074ce951e" alt="正しいトランスポートを選択したアタッチ ダイアログの画像を含める" width="936" height="692" data-path="images/gdk/tools/xbox_pc_remote_debugger_attach.png" />

## 関連項目

[XBOX PC Remote Tools](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/pc-dev/overviews/remote-gamedev-tools)


## Related topics

- [Visual Studio を使用した PC プロジェクトのデバッグ](/ja-jp/tools/tools-pc/visualstudio/gr-vs-debugging-with-visualstudio.md)
- [Visual Studio (目次)](/ja-jp/tools/tools-pc/visualstudio/gr-visualstudio-toc.md)
- [Visual Studio](/ja-jp/tools/tools-pc/visualstudio/index.md)
- [Visual Studio を使用した XBOX プロジェクトのデバッグ](/ja-jp/tools/tools-console/visualstudio/debugging-with-visualstudio.md)
- [Unity で GDK を使用する](/ja-jp/build/gdk-and-engines/unity/unity.md)
