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

# 使用 Visual Studio 偵錯 XBOX 專案

> 使用 Visual Studio 偵錯 XBOX 專案

在 Visual Studio 中偵錯 XBOX Microsoft Game Development Kit (GDK) 專案，是由作為 Microsoft Game Development Kit (GDK) 一部分安裝的 XBOX 偵錯工具元件所啟用。支援 Visual Studio 2019 與 2022。對於平台為 Gaming.Xbox.One.x64 或 Gaming.Xbox.Scarlett.x64 的所有專案，XBOX 偵錯工具都是預設的偵錯工具，如下列螢幕擷取畫面所示。

![Visual Studio 標準工具列的螢幕擷取畫面，顯示方案平台下拉式清單中的 Gaming.Xbox.One.x64 與 Gaming.Xbox.Scarlett.x64 平台，以及作為預設偵錯工具的 XBOX 偵錯工具](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_gamecore_debugger.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=ae6b86f1e17009d38d4c4fc6d14b645a)

## 設定 Visual Studio 偵錯工具

從 Visual Studio 中使用 F5 啟動偵錯工具時，預設會使用您透過其他 Microsoft Game Development Kit (GDK) 工具 (例如 [XBOX Manager](https://docs.xbox.com/zh-TW/tools/tools-console/xbom/xbom.md) 或 [xbConnect](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbconnect.md)) 所設定的預設主機。若要覆寫此行為，請使用專案屬性頁 **XBOX One** 區段底下的 **Remote IP Address** 屬性指定主機，如下列螢幕擷取畫面所示。

![Visual Studio 專案屬性頁對話方塊之 XBOX One 區段的螢幕擷取畫面，顯示內容窗格中的 Remote IP Address 屬性](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_remote_ip_property.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=ae62a7abe797ac6f289d9087c0535ef0)

Visual Studio 中的偵錯工具列包含一個下拉式清單，指出透過 F5 或 Ctrl-F5 啟動時遊戲將部署至哪部主機。如果需要變更目標主機，該下拉式清單有一個按鈕可用於快速存取專案的屬性頁。

![Visual Studio 中的目標裝置下拉式清單](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_target_device.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=6217d73b3236cc401934f9e15afedec5)

偵錯工具也可以從 [XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) 啟動。在此情況下，使用的主機是 XBOX Gaming Explorer 頂端連線功能區中所識別的主機，如下列螢幕擷取畫面所示。

![Visual Studio 中 XBOX Gaming Explorer 的螢幕擷取畫面，顯示 XBOX Gaming Explorer 頂端連線功能區所識別之主機上遊戲內容功能表中醒目提示的 Debug Title 功能表項目](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_explorer.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=10d109c5dfeffb578fbcdbdf1b85551d)

### 符號路徑

使用 Visual Studio 偵錯時，可以使用數個 Game OS 元件的程式資料庫 (.pdb) 檔案。例如，設定 Visual Studio 使用這些符號，可在中斷進入偵錯工具時提供更完整的呼叫堆疊。

部分 Game OS 符號會由 Microsoft Game Development Kit (GDK) 安裝程式安裝在您的開發電腦上，其他符號則可在 Microsoft 公用符號伺服器上取得。

安裝程式所安裝的 Game OS 符號位於開發電腦上的 *C:\Program Files (x86)\Microsoft GDK\<edition number>\GXDK\gameKit\symbols*。與平台無關的 .pdb 位於符號資料夾的根目錄。平台特定的 .pdb 位於 *Xbox Series X|S* 與 *XboxOne* 子目錄中。

若要在本機電腦上新增 Game OS 符號目錄的路徑，請使用 Visual Studio **選項** 對話方塊 **偵錯** 區段底下的 **符號** 設定，如下列螢幕擷取畫面所示。

![Visual Studio 選項對話方塊偵錯區段之符號窗格的螢幕擷取畫面，顯示符號檔 (.pdb) 位置清單中已選取的 Game OS 符號路徑](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_symbol_path.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=fe80e85d2b02ca0260c8feca1e66affa)

若要存取 Microsoft 公用符號伺服器上可用的 Game OS 符號，請勾選 **符號** 對話方塊中的 **Microsoft 符號伺服器** 核取方塊。將 Microsoft 符號伺服器新增為符號檔位置，會導致 Visual Studio 在符號伺服器上搜尋遊戲所載入的所有二進位檔。全面的符號搜尋可能相當耗時。您可以將 Visual Studio 設定為只針對遊戲所使用的特定二進位檔集合尋找 .pdb，以縮短搜尋時間。若要指定 Visual Studio 應尋找 .pdb 的二進位檔集合，請使用 **選項** 對話方塊中的 **僅載入指定的模組** 選項。下列螢幕擷取畫面顯示 Visual Studio 設定為只為少數選定的二進位檔從公用符號伺服器載入符號。

![選取僅載入指定的模組選項後，顯示在 Visual Studio 選項對話方塊偵錯區段之符號窗格上方的自動載入符號對話方塊的螢幕擷取畫面](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_symbol_crt_path.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=febcdd7985036eab02a6811025093ed3)

### 與偵錯相關的屬性

偵錯工具可以透過專案屬性對話方塊以及 [XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) **Settings** 索引標籤中公開的一組屬性進一步設定。例如，這些屬性包括將命令列引數傳遞給遊戲以及開啟模組載入記錄的功能。如需可用屬性的詳細資料，請參閱 [XBOX 開發的 Visual Studio 屬性](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/durango-property-pages.md)與 [XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md)。

## 附加至執行中的遊戲

XBOX 功能表與 [XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) 包含將偵錯工具附加至主機上執行中遊戲的功能表選項。

若要附加至預設主機上目前執行的遊戲，請使用 **XBOX** 功能表上的 **Attach to Running Game**。**XBOX** 功能表可從 Visual Studio 功能表列存取，如下列螢幕擷取畫面所示。

![Visual Studio 延伸模組功能表底下 XBOX 功能表的螢幕擷取畫面，顯示 Attach to Running Game 功能表項目](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_attach_menu.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=58844432429dee7528487309508f9a95)

您也可以附加至在您已透過 [XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) 新增之任何主機上執行的遊戲。**Home** 索引標籤之 **Game Processes** 與 **Titles** 區段中的內容功能表，包含附加至執行中遊戲的功能表項目，如下列螢幕擷取畫面所示。

![Visual Studio 中 XBOX Gaming Explorer 的螢幕擷取畫面，顯示目前主機上遊戲處理序內容功能表中醒目提示的 Attach 功能表項目](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_attach_game.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=189224d56291ef162a5308ad7f1000d9)

**Consoles** 索引標籤中特定主機的內容功能表，會附加至在該主機上執行的遊戲，如下列螢幕擷取畫面所示。

![Visual Studio 中 XBOX Gaming Explorer 之 Consoles 索引標籤的螢幕擷取畫面，顯示主機內容功能表中醒目提示的 Attach to Game Process 功能表項目](https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs_debug_attach_console.png?fit=max\&auto=format\&n=6TXzXmujKayly5Sf\&q=85\&s=93ec684a64d492f6aad865b6342d4ec3)

Visual Studio **偵錯** 功能表底下的 **附加** 對話方塊也可用於附加至執行中的遊戲。使用 Visual Studio 2022 時，請在 **連線類型** 下拉式清單中選取 **XBOX Direct Connection**，並在 **連線目標** 文字方塊中輸入主機的 Host IP 位址或 System IP 位址。可以使用 [xbconnect](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbconnect.md) 命令列工具判斷 Host 與 System IP 位址。

> [!NOTE]
>
> 雖然 Host IP 或 System IP 位址都可用於附加至遊戲，但在單一工作階段中多次附加時，請避免混用兩者。例如，如果您一開始使用 Host IP 附加，後續附加時請繼續使用 Host IP。

![使用 Visual Studio 2022 附加對話方塊](https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs2022_attach_dialog.png?fit=max\&auto=format\&n=6TXzXmujKayly5Sf\&q=85\&s=71f8447875f069e11920e2d3a8ae12c5)

使用 Visual Studio 2019 時，請在 **連線類型** 下拉式清單中選取 **Remote No Authentication**，並在 **連線目標** 文字方塊中輸入主機的 Host IP 位址。

## 使用 Visual Studio 2022 偵錯 XBOX 專案

使用 Visual Studio 2022 進行偵錯，需要使用 2021 年 10 月 (或更新版本) 的 Microsoft Game Development Kit (GDK) 建置要偵錯的遊戲。之所以相依於 2021 年 10 月 (或更新版本) 的 Microsoft Game Development Kit (GDK)，是因為這些 Microsoft Game Development Kit (GDK) 版本中隨附的 Game OS 包含使用 Visual Studio 2022 進行偵錯所需的二進位檔。如果嘗試對較舊的 Game OS 使用 Visual Studio 2022 進行偵錯，會顯示下列錯誤。

![嘗試對早於 2022 年 3 月 GDK 隨附版本的 Game OS 使用 Visual Studio 2022 偵錯工具](https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs_2022_old_gamos_debug_error.png?fit=max\&auto=format\&n=6TXzXmujKayly5Sf\&q=85\&s=1c2d4c8fd1be70615c84d85d0ce2f216)

## 偵錯封裝組建

> [!NOTE]
>
> 在 XBOX One Software Development Kit 的版本中，偵錯封裝組建的工作流程涉及使用 Visual Studio 中的 **偵錯已安裝的應用程式套件** 功能表項目。如本節所述，此工作流程已在 2019 年 9 月版的 Microsoft Game Development Kit (GDK) 中大幅簡化。

[XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) 中用於在偵錯工具下啟動遊戲或附加至執行中遊戲的內容功能表選項，對於封裝組建與鬆散檔案部署同樣適用。

串流安裝套件會在 [XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) 中以 **Install** 部署類型與圖示加以識別，如下列螢幕擷取畫面所示。

![Visual Studio 中 XBOX Gaming Explorer 的螢幕擷取畫面，顯示目前主機上封裝組建 (以 Titles 清單中的遊戲圖示識別) 之下拉式功能表中醒目提示的 Debug Title 功能表項目](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_streaming_install.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=f3a1e2537ff1f4c2264daad89c8645b2)

## 偵錯遊戲生命週期狀態之間的轉換

若要正確支援[遊戲生命週期](https://docs.xbox.com/zh-TW/build/console-features/console-workflows/xbox-game-life-cycle.md)，您必須為完整、暫停與受限生命週期狀態之間的轉換撰寫事件處理常式。Visual Studio 提供數項功能，協助您撰寫遊戲成功通過遊戲生命週期狀態轉換所需的強固事件處理常式。

[XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md) 中的內容功能表包含 **Suspend**、**Resume** 與 **Constrain** 遊戲的選項，讓您可以在開發套件上偵錯處理常式。

![Visual Studio 中 XBOX Gaming Explorer 的螢幕擷取畫面，顯示目前主機上處於受限狀態之遊戲內容功能表中醒目提示的 Unconstrain 功能表項目。](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_plm.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=67aa48c4a56fcddb42b61c22fe9535b3)

請注意，您也可以從 [XBOX Manager](https://docs.xbox.com/zh-TW/tools/tools-console/xbom/xbom.md) 與 [xbApp](https://docs.xbox.com/zh-TW/tools/tools-console/commandlinetools/xbapp.md) 命令列工具手動觸發這些狀態轉換。

無論狀態轉換是如何觸發的，描述轉換的診斷訊息以及任何失敗都可以在 [xbWatson](https://docs.xbox.com/zh-TW/tools/tools-console/xbWatson/xbwatson.md) 以及 Visual Studio 內的 [XBOX System Monitor](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-system-monitor.md) 視窗中看到。

在零售環境中，**Suspend** 事件的處理常式必須在 1 秒內完成，否則系統會終止您的遊戲。顯然不應在開發套件上一律強制執行此暫停時間限制，否則幾乎不可能偵錯 **Suspend** 處理常式。

根據預設，當附加 Visual Studio 偵錯工具 (或其他任何使用者模式偵錯工具) 時，會停用 1 秒暫停逾時，讓您可以花費所需的時間完成偵錯工作。

Visual Studio 偵錯工具也可以設定為在附加時重新啟用暫停逾時。在此模式下，如果您的 **Suspend** 處理常式未在 1 秒限制內完成，偵錯工具會強制中斷，讓您可以看到時間限制到期時您在 **Suspend** 處理常式中的位置。在此模式下執行偵錯工具，有助於了解您的 **Suspend** 處理常式超過時間限制的頻率及原因。在 Visual Studio 中設定 **Break On Suspend Timeout** 屬性，即可讓偵錯工具進入啟用暫停逾時的模式。在此模式下發生的偵錯中斷，是在偵錯工具插入處理序的新執行緒上進行。請瀏覽至包含 **Suspend** 處理常式的執行緒以開始偵錯。

![Break On Suspend Timeout 屬性](https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_debug_suspend_timeout_property.png?fit=max\&auto=format\&n=NsRUQ49ZRpXgoZ9R\&q=85\&s=7061f40a72fa0988c3bea6b1295e632c)

如果在發生暫停逾時時未將偵錯工具附加至遊戲，系統會建立靜止當機傾印。您可以使用 [xbWatson 中的記憶體傾印面板](https://docs.xbox.com/zh-TW/tools/tools-console/xbWatson/xbwatson.md)存取這些傾印。

## Visual Studio 2022 中的 C++ 動態偵錯

C++ 動態偵錯是一項新的偵錯功能，可在不犧牲效能的情況下，為最佳化程式碼提供完整的偵錯體驗。透過隨需函式取消最佳化，您可以在任何位置設定取消最佳化的中斷點並逐步執行。若要啟用 C++ 動態偵錯：以滑鼠右鍵按一下專案，選取 屬性 > 組態屬性 > 進階 > 進階屬性 > 使用 C++ 動態偵錯 (預覽)。使用動態偵錯功能需要 Visual Studio 2022 17.14 Preview 2 或更新版本。前往 [https://aka.ms/dynamicdebugging](https://aka.ms/dynamicdebugging) 了解詳細資訊。

> [!NOTE]
>
> 使用 C++ 動態偵錯所需的 Visual Studio 版本 (17.14 版) 預定在 2025 年 4 月 GDK 之後發行。Visual Studio 17.14 版發行後，將會發行包含 C++ 動態偵錯所需之 C++ 偵錯監視器 (msvsmon.exe) 的 GDK 更新。如果您希望在該 GDK 更新發行之前使用 C++ 動態偵錯，請與您的 Microsoft 客戶經理聯絡，以取得將適當版本的 C++ 偵錯監視器載入至主機的指示。

## 另請參閱

[XBOX Gaming Explorer](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/xbox-gaming-explorer.md)

[Visual Studio](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/visualstudio.md)


## Related topics

- [Visual Studio](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/index.md)
- [Visual Studio 2022 GDK 支援注意事項](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/vs-2022-support-notes.md)
- [Visual Studio 2026 GDK 支援注意事項](https://docs.xbox.com/zh-TW/tools/tools-console/visualstudio/vs-2026-support-notes.md)
- [使用 Visual Studio 偵錯 PC 專案](https://docs.xbox.com/zh-TW/tools/tools-pc/visualstudio/gr-vs-debugging-with-visualstudio.md)
- [在 Visual Studio 中偵錯遠端 Windows 裝置上的 PC 專案](https://docs.xbox.com/zh-TW/tools/tools-pc/visualstudio/gr-vs-debugging-with-visualstudio-remote-windows.md)
