可以使用 Xbox 性能调查器 (PIX) 或 Windows Performance Analyzer (WPA) 来调查线程问题。 PIX 提供了一个针对游戏开发人员的经过微调的界面,并组织信息以使最有用的数据始终显示在最前沿。 另一方面,WPA 提供未经筛选的所有信息。 你必须创建自己的筛选器,它可能是陡峭的学习曲线,但可以提供更高级别的控制和对系统原始数据的了解。 但是,它可以对系统中的原始数据提供更高层次的控制和了解。
PIX 作为 Microsoft 游戏开发工具包 (GDK) 的一部分安装 WPA 可从 Microsoft Store 免费下载。 它也可作为 Windows 评估和部署工具包的一部分获取。
PIX
若要使用 PIX 分析线程行为,首先要获取计时捕获,我们将以此为起点来探索本节中讨论的各类线程问题。 有关计时捕获和每个视图如何工作的详细信息,请参阅 PIX 计时捕获(NDA 主题)要求授权。 跟随下列步骤在 PIX 中使用计时捕获。
打开 PIX 并连接到你的主机。 有关设置 PIX 的详细信息,请参阅设置和入门(NDA 主题)要求授权。 确保要分析的游戏正在连接的主机上运行。
连接到主机后,Xbox 连接选项卡会出现,显示主机 IP 地址。 如图 1 所示,选择选项,展开开始计时捕获节。
图 1. 显示 PIX 中的开始计时捕获选项卡
确保选中上下文切换调用堆栈。
选择秒表图标以开始捕获。 在系统监视器视图中,有突出显示的图标部分,它代表正在被捕获的帧。
捕获足够的图像后,请再次单击秒表图标以停止捕获。 新的选项卡会打开,显示捕获的时间线视图,如图 2 所示。
图 2. 显示在 PIX 中的默认计时捕获视图
注意
有三个主要视图标记为 时间线、 元素详细信息和 范围详细信息。 可以通过时间线视图查看单个线程的时间线,方法是用鼠标的滚轮上下滑动。
选择并移动时间线的某个部分来放大想看的区域。
- 可以在上下文菜单中选择缩放到选中区域,菜单在右键单击时间线时出现。
- 你也可以直接编辑“可见时间范围”或“选定时间范围”。 你也可以按住鼠标右键以进行平移来缩放和移动时间线,并按住 Ctrl 然后用鼠标滚轮进行缩放。
WPA
Windows Performance Analyzer (WPA) 是一种用于查看事件跟踪日志 (ETL) 文件的工具。 若要使用 WPA,首先要创建 ETL 捕获。 一种使用方法是,在游戏操作系统中运行 xperf.exe,它让你在选择收集到的数据时具有最大的灵活性。 但另一个收集 ETL 数据的选项是使用 GDK 命令提示符的 xbperf(NDA 主题)要求授权。
WPA 档案在GDK 示例中,示例可在下载软件后,在“GDKSamples”>“Tools”>“WPAProfiles”文件夹下找到。 WPA 档案是用来以一直格式设置 WPA 接口的配置文件。 在示例中提供的是在查找线程问题节中使用的。
使用以下步骤创建 ETL 捕获和管理 WPA 档案。
- 附录 A:创建 ETL 跟踪的批文件是使用在游戏操作系统中运行的 xperf.exe 捕获 ETL 的示例批文件。 建议使用批文件,除非你已对 EATL 捕获熟悉。
- 在批文件从 GDK 命令提示符运行后,可确保游戏操作系统正在运行、开始捕获、继续捕获,直到窗口接收到输入。
注意
这些捕获量可能会变得非常大,因此请立即开始,除非你知道你需要更多内容。 捕获停止后,会复制 ETL 文件到当前工作目录,然后尝试打开。
- 每个查找线程问题页面说明了在例子中加载了哪个 WPA 档案来整理数据。 选择档案>应用...>浏览...来加载这个档案,然后打开 .wpaProfile 文件。
- WPA 配置文件将自动在新选项卡中打开视图。每个视图都包含一个图形和一个数据表。 WPA 中的所有视图只是数据表中列和设置的不同组合,用于显示 ETL 事件收集的数据的相关子集。
- 图形显示的数据有所不同,取决于表中列的顺序。 也可以通过右键单击表中的列标题来编辑视图,但是对于每种类型的问题,提供的 .wpaProfile 文件都是不错的初始配置。
注意
始终可以通过在视图顶部栏中选择其名称,然后选择重置来将其重置为原始设置。 如果找到你喜欢的设置,也可将其保存。 同样,可以从“个人资料”菜单中保存一组视图。 WPA 处理 .pdb 文件并存储缓存以便快速查找。 可以通过选择 SymCache 选项卡中的 SymCache 生成文件夹路径来找到。
一些情况下,WPA 加载符号的时间会比较长,因为必须给每个 .pdb 文件生成缓存。 对于较大的 pdb 文件,这可能需要几分钟。 但是,只有在首次显示 pdb 时才需要这样做。
- 通过单击并拖动图形的一部分以使其突出显示,然后右键单击并选择“缩放”,可以放大图形的各个部分。 你也可以使用右键菜单中的“选择时间范围...”来突出显示要放大的更精确的时间范围。