Repository navigation
Debugging Tools and Commands
Mainkill1 edited this page Sep 21, 2026
·
10 revisions
Use this page to choose a debugging tool. Each linked page explains where to obtain the tool, how to verify the installation, how xemu uses it, how to interpret its output, and what evidence to retain.
Use Debugging Lag and Hot Paths for the investigation process and Graphics Transition Debugging Tools for scene, resource, snapshot, and renderer-transition failures.
| Name | OS | Description / use cases |
|---|---|---|
| Git | Windows, Linux, macOS | Identifies the exact source commit and tree, checks for uncommitted changes, and bounds baseline/candidate diffs. |
| SHA-256 and artifact identity | Windows, Linux, macOS | Proves byte identity for executables, symbols, traces, configurations, captures, and test media. |
| Release symbols with objcopy and strip | Windows cross-build, Linux, macOS | Keeps a small optimized executable while retaining matching DWARF for source attribution. |
| Windows Performance Recorder (WPR) | Windows | Records bounded ETW traces containing CPU, scheduling, and optional GPU activity. |
| Windows Performance Analyzer (WPA) | Windows | Interactively isolates processes, threads, hot intervals, waits, ready time, and GPU overlap in ETL traces. |
| WPAExporter | Windows | Exports repeatable, filtered WPA tables from ETL traces for scripted analysis. |
| xperf | Windows | Performs quick command-line ETL health, sampled CPU, process, and context-switch interrogation. |
| addr2line | Windows, Linux, macOS | Resolves optimized machine addresses to functions, source lines, and inline chains using matching symbols. |
| objdump | Windows, Linux, macOS | Inspects PE/ELF sections, symbols, and generated machine code around a hot address. |
| Defined-text symbol maps | Windows, Linux, macOS | Provides bounded function ownership when full stack or source-line symbolization is unavailable. |
| ripgrep (rg) | Windows, Linux, macOS | Finds definitions, callers, state transitions, diagnostics, and known incomplete paths in the source tree. |
| PowerShell automation | Windows, Linux, macOS | Orchestrates Windows GUI runs, process identity, hashing, input, ETW capture, and owned-process cleanup. |
| RenderDoc | Windows, Linux, Android | Captures and replays guest Vulkan/OpenGL frames; inspects draws, resources, pixel history, and pipeline state. |
| Vulkan validation layers | Windows, Linux, macOS, Android | Detects invalid Vulkan use, object-lifetime errors, and synchronization hazards in diagnostic runs. |
| xemu cause counters | Host-independent analysis | Attributes why a hot framework path repeats without emitting one text log per event. |
| WPA attribution helpers | Windows capture; cross-platform analysis | Produces integrity-checked, privacy-minimized ETL exports and bounded timing summaries. |
| Correctness hash comparison | Windows, Linux, macOS | Compares deterministic baseline/candidate results and keeps UNVERIFIED distinct from PASS. |
| Question | Start with | Continue with |
|---|---|---|
| Which xemu thread owns a lag interval? | WPR | WPA or xperf |
| Is the thread running, waiting, or ready? | WPA | WPA attribution helpers |
| Which source line owns a sampled address? | addr2line | objdump and ripgrep |
| Which draw or resource first corrupts a frame? | RenderDoc | Vulkan validation and the graphics-transition guide |
| Why does a framework helper repeat? | xemu cause counters | Exact-source inspection with ripgrep |
| Did candidate output remain equivalent? | Correctness hashes | Visual/gameplay validation for behavior outside the hash contract |
| Does evidence belong to the reviewed build? | Git and SHA-256 | Matching release symbols |
flowchart LR
A[Exact Release executable and symbols] --> B[Bounded capture]
B --> C[Inspect the correct process, thread, API, and time range]
C --> D[Resolve addresses and resources]
D --> E[Inspect exact source and state ownership]
E --> F[Add one bounded diagnostic if causality is still missing]
F --> G[Build an uninstrumented candidate]
G --> H[Correctness and performance validation]
- Record commit, tree, working-tree state, executable hash, symbol hash, tool versions, configuration, renderer, GPU, and driver.
- Start capture before the controlled action, then report only the explicit measurement interval.
- Verify that the capture contains the intended workload. A file existing does not prove correct admission.
- Use the least invasive tool that answers the unresolved question.
- Remove diagnostic timing from acceptance evidence. Validate the final change in an optimized, uninstrumented build.
- A source commit does not identify a binary. Record executable and symbol hashes.
- A profiler identifies where time or samples appeared; it does not prove root cause or removable cost.
- Temporal GPU/CPU overlap does not prove a dependency.
- A source match does not prove that code executed.
- A hash PASS proves only the hashed contract.
UNVERIFIEDis not PASS. - Display-write cadence is a guest-progress proxy, not rendered or monitor-present FPS.
- Keep diagnostic logging, validation, and tracing disabled during ordinary performance acceptance unless that run is explicitly measuring their cost.
- Preserve failed admission, dropped events, incomplete exports, abnormal termination, and unfavorable results instead of relabeling them as passes.
DSP tooling guide and navigation updated November 2, 2026 for experimental PR #384, source 8f51d237. Capture/replay usage and limits.
The earlier wiki-wide review was published November 1, 2026. Emulator source: b7140848. Reviewed wiki content: 1d2b671. Current status · Release availability · Publication process.
- Home
- Current status
- Stable versus main
- Implemented mechanisms
- Controls and defaults
- Measured results and limits
- Complete change register
- System
- CPU and vCPU
- Memory and DMA
- Graphics / NV2A
- APU and audio
- Timing and timers
- Platform and I/O
- Hardware observations
- Fidelity boundaries
- Methodology
- PGR2 routes
- Debugging lag / hot paths
- Tools and commands
- DSP capture, replay and fuzzing
- HLE readiness and public XISO proof
- Concurrent DSP shadow and OpenAL proof
- DSP HLE operation inventory
- DSP HLE fix examples and testing
- Development
- Upstream shortlist
- Wiki maintenance
- Research / retired work
- Optimization catalog
- Hot-path shortcuts
- Researched experiments
- Unproven proposal directory
- PR lessons
- September26 snapshot
Repository · PRs · Issues