This project's goal is to parse the famously impenetrable
strace output into JSON.
npm i -g b3-strace-parser
or download the latest release
strace -f -p 1234 |& b3 # The "|&" is a shortcut for "2>&1 |" from Bash 4.0 (pipe stdout AND stderr to next program)
strace outputs to
stderr, which is why you need the redirection.
For extra tastiness, combine with
strace -f -p 1234 |& b3 | jq '' -c
npm test to execute the test suite.
To enable extra tracing for problem-solving, set
Caveats, Limitations & Other Miscellany
- Speed-wise, the utility performs well (according to my biased and unscientific benchmarking). It can currently parse ~15-20k lines per second, and there's much room for optimisation I'm sure.
- The utility cannot handle unfinished syscalls
- The utility silently skips parsers, unless the
-s/--stop-on-failswitch is enabled
- The utility uses the very excellent peg.js and you should too!
If you encounter any parsing errors, please create an issue and I will be happy to fix it! ...or better yet, be a good FOSS citizen and send an MR :)
Well, that's up to you. I figured that this output is so information-dense that it has to be useful in a structured format.
I love this utility and use it all the time, and wanted to learn more about it.
...plus it was a fun, terrifying, frustrating and illuminating excursion into parsing grammars (but oy vey what a schlep!).