Troubleshooting
Where the logs are
The loader's, the runtime's and each game's logs, and what their lines mean.
All paths are under sdmc:/switch/renpy-loader/.
| File | Written by | What is in it |
|---|---|---|
logs/loader.log | Loader | Start-up (version, applet type, Handheld/Docked), library scan, launches, settings saves, ui lines |
logs/runtime.log | Runtime | Game start (folder, saves folder, applet type, memory), power saver, thread and heap audit, exit status |
logs/<id>/log.txt | Ren’Py | Ren’Py’s own log: renderer, GPU, init timings |
logs/<id>/traceback.txt | Ren’Py | The error, when a game stops with one |
logs/<id>/python.txt | Runtime bridge | Python output: input events, saves and loads, notices |
cache/python-selftest.txt | Self-test | The report of the last Python self-test |
Each line of loader.log and runtime.log starts with the date and time, and is flushed to the SD card as it is written, so a log is complete up to a crash. Ren’Py’s log.txt and traceback.txt go to logs/<id>/, never into the game folder.
Useful lines
Loader start:
rpynx 0.1.0, Application (full memory), HandheldUI telemetry, in loader.log. These lines have ui after the time, so you can grep for them. At start: ms to the first frame, applet type, heap. Every 60 s while the loader is open: frames drawn, average and maximum render time, core busy %, SoC temperature, heap, covers decoded. Warnings, at most one per kind per minute: a frame over 33 ms, redrawing while idle, a cover that cannot be decoded.
Input, in a game’s python.txt, one line per press:
input: confirm (A)
input: down (DDown)
input: emergency combo, default controls restoredSaves and loads, in python.txt:
rsl: save 1-1 at game/script.rpy:72
rsl: load 1-1
rsl: loaded, now at game/script.rpy:72Sleep and HOME, in runtime.log: resumed: this thread did not run for 54 s.
Exit, in runtime.log: Ren'Py finished with status 0. Any other status means the game stopped with an error.
Refusals, in loader.log: jp-name-test: not started, applet mode (394 MiB).