The Xbox Hang Investigation Tool (XHIT) is used for offline analysis of GPU hang dumps.
If the console GPU hangs, a debug dump is written to an .xhit file. This file is stored on the console on the xd:\drive. By default the dump files are named with the date and time (GMT), for example:
gpuhang-2014-05-13-22-11-33.xhit
gpuhang-2014-05-13-22-16-44.xhit
gpuhang-2014-05-13-22-34-05.xhit
For clarity, you can rename these files.
To analyze the dump, run XHIT from the Xbox One Command Prompt window, as follows.
xhit [/?] [/help] [/index] [/disasm] [/fulldisasm] [/detailed] [filename]
|
| Option | Description |
|---|---|
| /? | Displays help for the tool. |
| /help | Displays help for the tool. |
| /index | Displays the file index. |
| /disasm | Disassembles all the command buffers. |
| /fulldisasm | Disassembles all the command buffers, including disassembly of all fields within packets and registers. |
| /detailed | Displays additional details. |
| filename | Specifies the location (on the local PC) of the .xhit file containing the GPU hang dump to be analyzed. The path is fully specified as a console-local path; for example: d:\gpuhang-2014-05-13-22-11-33.xhit |
XHIT displays the same output as the runtime GPU crash analysis performed by the Direct3D graphics driver at the time of the crash.
To turn off the writing of the dump file, see ID3D11DeviceX::SetHangCallbacks. The return value from the callback determines the setting: 1 indicates that a dump file should be written out; 0 indicates that a dump file should not be written out.
The hang analysis consists of several sections, described below.
If a GPU fence deadlock is detected, then a fence debug table will be displayed, such as the following:
One or more fence deadlocks detected:
Engine SDMA 1 waiting for fence 0x010000000001e2e1 to be signaled from engine Gpu
The above fence debug table indicates that DMA engine 1 is waiting for a fence to be signaled by the graphics immediate context (Gpu). The 64-bit fence value is the value returned by a call to ID3D11DeviceContextX::InsertFence on any of the immediate contexts.
A list of GPU blocks that are hung is listed in the GPU register state summary. This section is primarily for advanced debugging scenarios. Many hang types detectable from registers are summarized later in the high-level summary section.
The GPU command buffers are parsed in the vicinity of the GPU command processor’s current read pointer (RPTR) position. The command buffers are parsed for PIX events and draw calls, and the event tree is printed, along with an arrow pointing towards the spot where the GPU has stopped. Deferred command lists (also known as IB2s) are parsed as well as immediate commands (IB1s) from the graphics immediate context.
Note that PIX events must be manually inserted by the title using PIXBeginEvent/PIXEndEvent calls, and that PIX events are not present in retail builds of Direct3D.
The hang analysis concludes with plain-English descriptions of issues detected during GPU hang analysis, including areas of investigation for follow-up.