| Crates.io | playdate-symbolize |
| lib.rs | playdate-symbolize |
| version | 0.2.2 |
| created_at | 2024-04-24 07:47:13.743447+00 |
| updated_at | 2025-02-10 19:34:42.149453+00 |
| description | Tools for symbolise addresses from bin (pdex.elf) and Playdate's trace or crashlog. |
| homepage | https://github.com/boozook/playdate |
| repository | https://github.com/boozook/playdate.git |
| max_upload_size | |
| id | 1218468 |
| size | 162,367 |
These tools helps symbolize addresses from your game's ELF file (pdex.elf) and Playdate's CPU-trace logs or crash logs.
Provided command-line utilities to make this process easier:
pd-addr2line - takes address, returns symbol with spanpd-symbolize-crashlog - takes crashlog.txt, returns symbolized crashlogpd-symbolize-trace - takes trace-dump and symbolizing itAll of them have almost same interface.
The pd-addr2line can operate with stdin or file.
pd-addr2line --exe pdex.elf -Cfri 0xc0a 0x8053C75 10 0x6000027a 0x080bf518
echo "0x8053c75\n0x80bf518" | pd-addr2line --exe pdex.elf -Cfri
The pd-symbolize-crashlog can process crashlog file, currently stdin not supported.
pd-symbolize-crashlog --exe pdex.elf -Cfr /Volumes/PLAYDATE/crashlog.txt
The pd-symbolize-trace can operate with stdin or file.
Parameter --exe is optional and usually not needed for traces, but 🤷🏻♂️.
export RUST_LOG="info" # prevent unnecessary logs from appearing in the output
pd-symbolize-trace -Cfri trace-dump.txt # parse file, without elf
pd-symbolize-trace --exe pdex.elf -Cfri trace-dump.txt # with elf
cat trace-dump.txt | pd-symbolize-trace --exe pdex.elf -Cfri # pipe
⚠️ If you don't know what it is, you probably don't need it. Be careful and perform all actions at your own risk.
"trace", dump it to ./trace-dump.txt"stoptrace"How to do it using pdtool - see Usage with pdtool / Trace below.
All tools have --help parameter.
pdtoolThe pdtool is a util for ease interaction with a device via USB.
pdtool send ! "trace 10" && pdtool read | pd-symbolize-trace --exe pdex.elf -Cfri | ./symbolized-trace.log
# ...
pdtool send ! stoptrace
pdtool mount --wait && pd-symbolize-crashlog --exe pdex.elf -Cfri /Volumes/PLAYDATE/crashlog.txt;
pdtool unmount
You can grab the latest release or you can build your own.
To build tools you need Rust nightly toolchain. Recomended version is there.
cargo install playdate-symbolize
cargo install playdate-symbolize --git=https://github.com/boozook/playdate.git
To symbolize pointers (or offsets) outside of your program you need Playdate SDK.
Ensure that env var PLAYDATE_SDK_PATH points to the SDK root. This is optional, but good move to help the tool to find SDK, and also useful if you have more then one version of SDK.
Also you need your program - elf saved before packing into pdx.
This software is not sponsored or supported by Panic.