Repository navigation
Debugging Tool Release Symbols
← Debugging Tools and Commands
An optimized executable and its matching separate DWARF file preserve production timing while allowing sampled addresses to resolve back to source.
| Property | Details |
|---|---|
| Supported OS | GNU Binutils runs on Windows, Linux, and macOS; xemu Win64 builds commonly use the MinGW-prefixed tools. |
| Install | Install GNU Binutils or use the project pinned build toolchain. |
| Verify | x86_64-w64-mingw32-objcopy --version |
| Primary output | See the workflow below. |
For timing-sensitive xemu investigations, use an optimized Release-equivalent build and retain debug information separately.
DWARF does not make the executable a Debug build. It allows optimized machine addresses to be mapped back to source.
If the build pipeline already creates the stripped executable and matching debug file, use that path. A manual GNU-binutils split looks like this:
x86_64-w64-mingw32-objcopy --only-keep-debug xemu.exe xemu.debug
x86_64-w64-mingw32-strip --strip-debug xemu.exe
x86_64-w64-mingw32-objcopy --add-gnu-debuglink=xemu.debug xemu.exeHash the final stripped executable and the retained debug artifact after the split.
Debug/unoptimized binaries can materially change:
- thread timing;
- lock hold time;
- worker completion order;
- shader/pipeline compile overlap;
- queue pressure;
- TCG dispatch behavior;
- renderer/vCPU races;
- snapshot/lifecycle ordering.
If the bug only reproduces under optimized timing, a Debug build may make the investigation disappear or move somewhere else.
Create the debug file from the exact linked executable, then strip that same executable and add its debug link. Hash both outputs after the operation. Never symbolize one build with another build's DWARF.
Debug information does not imply an unoptimized Debug build. Optimization level and symbol retention are separate decisions.
- Tool name and exact version.
- Source commit/tree and executable SHA-256.
- The complete command or saved profile used.
- Input artifact hashes and the explicitly selected time or address range.
- Raw output plus any derived report; do not retain only a screenshot or conclusion.
- Admission failures, warnings, dropped events, incomplete rows, or unsupported operations.
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