> ## 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.

# xbWatson

> xbWatson

xbWatson 是一款用于在开发 PC 上监视来自 XBOX 主机的系统范围调试输出与关键系统事件的工具。xbWatson 提供规则编辑器，可自定义输出和操作，并支持进程监视与控制。你还可以收集堆转储、分级转储和微型内存转储。

功能概览：

* 收集系统范围的调试输出与关键系统事件
* 使用规则编辑器过滤和自定义输出
* 通过多个输出选项卡分离输出流
* 保存并分发你的自定义规则和设置
* 获取详细的进程监视与控制
* 创建并管理分级、堆和微型内存转储

xbWatson 基于会话工作，这意味着它的生命周期依赖于与特定主机的连接。你无法断开现有会话并将其重新连接到另一台主机。但是，你可以打开多个 xbWatson 实例，每个实例连接到不同的主机。xbWatson 是协作式的——这意味着不存在独占连接，也不会意外锁定主机。多个实例可以同时以同一台主机为目标并很好地协同工作，即使这些实例位于不同的计算机或属于不同的开发者。

## 目录

* [打开 xbWatson](#ID4EBB)
* [功能](#ID4ETB)
* [内存转储](#ID4ETC)
* [Game Memory](#game_memory)

<a id="ID4EBB" />

## 打开 xbWatson

可以从 GDK 命令提示符、[XBOX Manager](/tools/tools-console/xbom/xbom) 中打开 xbWatson，也可以在“开始”菜单中搜索 xbWatson。除非通过命令行提供测试主机的 IP 或主机名进行覆盖，否则 xbWatson 将连接到你的默认主机。

从命令行打开 xbWatson，使用默认主机：

```text theme={null}
C:\Program Files (x86)\Microsoft GDK\bin>xbwatson.exe  
```

以 IP 或主机名覆盖打开 xbWatson：

```text theme={null}
C:\Program Files (x86)\Microsoft GDK\bin>xbwatson.exe /x:consoleIP  
```

通过 Tools Launcher 从 [XBOX Manager](/tools/tools-console/xbom/xbom) 打开 xbWatson，将使用默认主机：

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_launcher.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=c4e6659e51a910b853fce42deb9ad89a" alt="xbWatson" width="298" height="234" data-path="images/gdk/tools/xbwatson_launcher.png" />

在 [XBOX Manager](/tools/tools-console/xbom/xbom) 中右键单击某个主机并选择 Launch xbWatson 来打开 xbWatson，此方式将使用所选主机：

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_xbom.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=73b6b415bac18f2225c5008d54d1605d" alt="xbWatson" width="293" height="485" data-path="images/gdk/tools/xbwatson_xbom.png" />

### 配置覆盖

启动时，xbWatson 会加载位于 %localappdata%\Microsoft\Xbox One Development Kit\xbWatson\3.0 下名为 defaultconfig.txt 的默认配置文件。此文件保存输出选项卡的状态、它们的配置、规则以及已应用的规则。该文件可以共享给其他 GDK 用户，以便他们能快速使用自定义设置打开 xbWatson 会话。你可以通过以下方式加载共享配置：

* 覆盖本地的 defaultconfig.txt 文件保存。
* 从 Windows 将 sharedconfig.txt 文件拖放到 xbWatson.exe 上。
* 使用指向已保存配置文件的命令行开关打开 xbWatson.exe（例如 xbwatson.exe E:\MyConfig\sharedconfig.txt）

要确定当前加载的配置文件位置，请查看 Dashboard 中的 Log 选项卡以了解正在加载的内容：<code>Loading configuration 'C:\Users\UserName\AppData\Local\Microsoft\Xbox One Development Kit\xbWatson\3.0\defaultConfig.txt'.</code>

<a id="ID4ETB" />

## 功能

xbWatson 的功能包括：在主输出窗口中查看和配置输出、通过编辑器和菜单应用输出规则、通过 Data feeds 菜单筛选输出类型，以及在 Dashboard 中管理围绕 Log 诊断、Game OS 进程列表以及堆栈转储生成与管理的高级功能。

### 主输出窗口

主输出窗口由标题栏、输出选项卡、规则编辑器和 Dashboard 组成，如图 1 所示。

**图 1.  xbWatson** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_connected.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=e34e40cdc10e0d86630f7ad4f2dddd45" alt="xbWatson" width="944" height="520" data-path="images/gdk/tools/xbwatson_connected.png" />

### 标题栏

当 xbWatson 连接到主机时，标题栏为绿色并显示连接详细信息，如图 2 所示。

**图 2.  标题栏（已连接）** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_titlebar.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=b0dcab289f41df95697f75eb3d84b7b4" alt="Title bar" width="937" height="23" data-path="images/gdk/tools/xbwatson_titlebar.png" />

如果 xbWatson 无法连接，或开发套件服务不可用，标题栏会显示为红色或黄色。若遇到这种情况，请查看 Dashboard 中的 Log 选项卡获取更多错误信息。这通常是由无效的 IP 地址或开发套件主机名引起的。请确认你的开发套件 IP 地址和主机名有效，以确保 xbWatson 可以正确连接到你的开发套件。

### 输出选项卡

启动时会有一个默认输出选项卡。你可以点击最后一个选项卡右侧的加号 (+) 创建更多输出选项卡。点击某个选项卡右侧的 x 可以移除该输出选项卡。点击名称 (Output) 可以重命名该选项卡。当有来自主机的调试输出流入时，该选项卡的活动指示灯会闪烁。可以通过高亮或选中文本，然后使用标准的 Windows 复制命令，将数据在剪贴板缓冲区与输出窗口之间移动。在每个输出选项卡中，你可以使用以下选项菜单来配置该选项卡。

#### Add/Remove Rules 菜单

使用 Add/Remove Rules 菜单可为当前输出选项卡开启或关闭规则，如图 3 所示。有关创建规则的更多信息，请参阅本主题后面的“规则编辑器”部分。

**图 3.  Add/Remove Rules 菜单** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_applyrules.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=d512e8d129a6f1bda7fdf02358d1e3b0" alt="Add/Remove Rules menu" width="324" height="408" data-path="images/gdk/tools/xbwatson_applyrules.png" />

#### Data feeds 菜单

使用 Data feeds 菜单可配置当前输出选项卡显示的输出流，如图 4 所示。

**图 4.  Data feeds 菜单** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_datafeeds.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=062d7fb7088ac20276ce3e8bd81366ed" alt="Data feeds menu" width="326" height="410" data-path="images/gdk/tools/xbwatson_datafeeds.png" />

通过选中或清除流名称旁的复选框，可以开启或关闭输出流。点击流名称右侧的齿轮图标可以配置该流中的各个选项，如图 5 所示。

**图 5.  流控制** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_feedcontrol.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=d24cd66fbe724b07962ae47ca31ab2c7" alt="Feed control" width="326" height="410" data-path="images/gdk/tools/xbwatson_feedcontrol.png" />

可用的数据流如下表所示。

| 数据流                 | 描述                                      |
| ------------------- | --------------------------------------- |
| Output debug string | 来自恢复 OS 和游戏 OS 的调试输出。                   |
| Process feed        | 来自游戏 OS 的进程更改输出。                        |
| Process debug feed  | 来自选定进程的调试事件输出。在从 Game OS 面板监视进程后，此输出可用。 |
| Console event feed  | 来自精选 Windows 与遥测事件列表的输出（当前重点关注应用注册与激活）。 |
| Game memory feed    | 指示当前主机上正在使用与可用的游戏和工具内存量的输出。             |

### 规则编辑器

规则编辑器位于主输出窗口的右侧，如图 6 所示。

**图 6.  规则编辑器** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_ruleeditor.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=53e171afd9072bd07f41b05f908b33cd" alt="Rule Editor" width="936" height="484" data-path="images/gdk/tools/xbwatson_ruleeditor.png" />

创建规则

1. 从左窗格中点击 **New**。会创建一个新的空规则。
2. 命名该规则。
3. 添加新条件。
   * 匹配正则表达式：输入要计算的正则表达式字符串。
4. 添加操作（在成功匹配条件后执行）：
   * **Change color**：打开颜色选择器，用于更改匹配文本的颜色。
   * **Acquire stack dump**：触发所选类型的堆栈转储。
   * **Include text**：仅显示该文本。
   * **Exclude text**：不显示该文本。
   * **Disable this rule**：停止运行此规则。这在自动化测试运行期间只需获取一次堆栈转储时很有用。
   * **Set trigger to break**：挂起进程并准备附加调试器。
   * **Invasively attach**：将 xbWatson 作为调试器附加到进程。
   * **Remove invasive attach**：移除 xbWatson 作为调试器。
   * **Flash window**：在任务栏中闪烁 xbWatson 图标。
   * **Show banner message**：在输出窗口顶部显示横幅消息，并将该选项卡的活动指示灯变为红色以吸引你的注意。
   * **Clear banner message**：移除输出窗口顶部的横幅消息。
   * **Enable other rule**：为此输出选项卡启用指定的规则。
   * **Disable other rule**：为此输出选项卡禁用指定的规则。
5. 保存该规则。

规则激活之前，必须将其应用到某个输出选项卡。可以在规则编辑器中点击 **Apply rules**，或者关闭规则编辑器并直接通过输出选项卡上的 **Apply rules** 菜单应用规则。

<Note>
  从规则编辑器应用规则时，请注意 **toggle multi-select** 按钮。仅应用当前所选的规则。
</Note>

### Dashboard

点击主输出窗口底部的向上箭头会打开 Dashboard，如图 7 所示。Dashboard 最小化时，窗口左下角会显示 Dashboard 的状态指示灯。这些状态指示灯对应于 Dashboard 项目。它们通过闪烁或改变颜色来指示数据流或状态变化。

**图 7.  Dashboard** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_dashboard.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=7a7a5aa54626efcdb21552aa47d04321" alt="Dashboard" width="939" height="33" data-path="images/gdk/tools/xbwatson_dashboard.png" />

#### Log

日志包含与 xbWatson 本身以及 xbWatson 与开发套件连接相关的信息。你可以查看启动时加载了哪个配置文件、正在联系的是哪个 IP 地址或已保存的连接字符串，以及关于 xbWatson 的其他调试信息。如果与开发套件的连接出现问题，该 Dashboard 项目会变为红色。

#### Game OS

当开发套件上没有游戏在运行时，此 Dashboard 项目显示为黄色，表明进程数据不可用。在没有游戏运行时，你可以看到有关开发套件设置的一小组数据。

当有游戏在运行时，你可以看到类似 Windows 任务管理器的扩展数据。行的颜色按以下方式指示状态，如图 8 所示。

* 绿色：进程数据在最近五秒内发生了变化。
* 红色：进程已结束。
* 橙色：进程被挂起，包括调试（break）。
* 蓝色：附加了调试器，包括作为 invasive attach 的 xbWatson。

选择某一行可激活进程列表下方的选项。

**图 8.  Game OS 进程列表** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_processlist.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=3a730de125f2ad3e4ab5be6e5ce3bf98" alt="Game OS Process List" width="936" height="328" data-path="images/gdk/tools/xbwatson_processlist.png" />

* Terminate：点击一个活动进程，然后点击 Terminate 按钮可结束该进程。
* Break (debug)：这会挂起进程并准备附加调试器。
* Resume：这会移除调试中断并恢复进程。
* Monitor：将 xbWatson 作为侵入式调试器附加。同一进程一次只允许附加一个侵入式调试器，因此以这种方式连接 xbWatson 会阻止 Visual Studio 连接到该进程。多个 xbWatson 实例会共享此附加连接。如果所有 xbWatson 实例都关闭，将自动断开附加。启用后，进程调试数据流（可从配置输出流 UI 使用）开始接收数据。附加后，Output debug string 会通过 Process debug 流传输。
* Detach：移除 xbWatson 作为侵入式调试器。

<a id="ID4ETC" />

#### 内存转储

使用 Memory Dump 菜单可生成内存转储或访问 quiesce 挂起转储。

可为主机上当前运行的游戏创建堆、微型或分级内存转储。生成的转储会存储在主机本地，可通过 **Manual Memory Dumps** 表下方的 **Download** 按钮下载。

只有在有游戏正在运行并且能够以这种方式生成内存转储时，**Generate** 按钮才可用。xbWatson 会以正在运行的游戏（进程 ID）与主机上已注册的游戏映像名相匹配为目标。

Memory Dump 面板仅在游戏运行时允许进行内存转储管理。生成和下载操作都会使 Dashboard 忙碌指示灯闪烁，表示正在活动。

如果发生挂起超时且没有附加调试器，则会自动创建 quiesce 挂起转储。这些转储有助于确定游戏的挂起处理程序为何未能在规定时间内完成。Dashboard 指示灯闪烁表明有 quiesce 挂起转储可用。可用的挂起转储会列在 **Quiesce Memory Dumps** 表中。使用表下方的 **Download** 按钮将 quiesce 挂起转储复制到你的开发 PC。有关 Microsoft Game Development Kit (GDK) 为调试[游戏生命周期支持](/build/console-features/console-workflows/xbox-game-life-cycle)所需的挂起和恢复处理程序提供的完整功能说明，请参阅[调试游戏生命周期状态之间的转换](/tools/tools-console/visualstudio/debugging-with-visualstudio)。

**图 9.  内存与 Quiesce 挂起转储** <img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_crashdump.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=f98a3922549577ee26a8704b46487d57" alt="Stack dumps" width="1427" height="782" data-path="images/gdk/tools/xbwatson_crashdump.png" />

<a id="game_memory" />

#### Game memory

以类似任务管理器的视图展示 xbWatson 所连接主机的状态。

Game Memory 面板目前重点关注游戏与工具的内存消耗。其他统计信息（例如 CPU 或文件 IO 统计）将在未来版本中添加。

<img src="https://mintcdn.com/microsoft-4404708b/5IpvKlT-jmAaVkeY/images/gdk/tools/xbwatson_system_monitor.png?fit=max&auto=format&n=5IpvKlT-jmAaVkeY&q=85&s=d04b22f345d028baa16df1a7014e9a12" alt="xbWatson 中的 Game Memory 面板" width="1417" height="783" data-path="images/gdk/tools/xbwatson_system_monitor.png" />

有关此面板中所提供图表的说明，请参阅 [XBOX System Monitor](/tools/tools-console/visualstudio/xbox-system-monitor)。

## 另请参阅

[XBOX 主机游戏开发（环境和工具）](/tools/tools-console/gc-tools-console-toc) [获取崩溃转储](/build/console-features/debugging-diagnostics/retrieving-crash-dumps)
