B3 CircleCI

Purpose

This project’s goal is to parse the famously impenetrable strace output into JSON.

Demo

asciicast

Installation

Using npm: npm i -g b3-strace-parser

or download the latest release

Usage

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 jq

strace -f -p 1234 |& b3 | jq '' -c

Tests

Run npm test to execute the test suite.

To enable extra tracing for problem-solving, set TRACE=true

Caveats, Limitations & Other Miscellany

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 :)

Um, why?

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!).

Why not do this in C?

  1. I don’t know C well enough, and…
  2. I invite you to examine the glorious mess that is this nearly 30-year old edifice
  3. Many people have tried and failed/given up, and I’m neither smarter nor more persistent than them