A resident payload that attaches to homebrew titles as their debugger, writes a crash report (registers, every thread's backtrace, stack, modules, code at the fault, memory before the crash) and shows a TV notification, then hands the signal back. It samples every title's memory (direct/GPU, heap, other), CPU and threads, and serves a dashboard on port 9113. The host tool symbolicates reports against the matching build's ELF, including reports a player sends as JSON. Tested on firmware 13.60 with Super Mario Sunshine and SwitchWaker. Claude-Session: https://claude.ai/code/session_016xMYBaR9GfxtETyVf6er1P
2.1 KiB
Working with PS5 DevTools
For an agent, or a person, who needs to know why a homebrew title crashed on a
jailbroken PS5. README.md says how it works.
The loop
tools/ps5devtools.py load # once per console boot (ELF loader on 9021)
tools/ps5devtools.py status # is the title attached? ("attached", not "not attached")
# ... run the title until it crashes ...
tools/ps5devtools.py crashes
tools/ps5devtools.py report # newest report, with function names
To prove the whole path on a title, test-crash makes its main thread take a
real page fault: the title closes, a report appears, and the TV shows a
notification. Do not use it on a title someone is playing.
A player can send a report's JSON (the dashboard's Download JSON, or the file
from /data/devtools/crashes/): tools/ps5devtools.py report FILE.json reads
it with names, without the console.
report prints the backtrace with source lines from the build's ELF and saves
JSON and text under captures/. Read the backtrace first, then the fault
address (a small address such as 0x18 is a null pointer plus a field offset),
then the code at the fault.
Rules
- Check the report says
symbols: ... (matches). A report taken from a different build than the ELF on disk gives wrong names. Rebuild, or pass--elfto the build that was running. handledmeans the title caught the signal itself and carried on. That is not a crash, though it may be a clue.- The payload attaches as a debugger. Do not run another debugger (gdbsrv, ps5debug) on the same title at the same time: only one can attach.
- Stop the payload with
quit, never by killing it: a debugger that exits takes its titles with it, andquitdetaches first. - Never print the console's address: it lives in
PS5_HOSTor the ignored.env. - Ask before closing a title someone is playing.
Finding things on the console
- Reports:
/data/devtools/crashes/<id>.json - The payload's log:
/data/devtools/devtools.log, orGET /api/log - The system's error records:
/system_data/priv/error/history/*.json(CE-108255-1is a title crash)