Dumps registers, backtrace, and instruction stream to a file descriptor. Intended to be self-contained and resilient. Where possible, will detect and intelligently handle corrupt state, such as jumping through a bad pointer or a blown stack. The harvesting and reporting of the crash log is left as an exercise for the reader.
Supports Linux on ARM, MIPS, and x86.
I initially started work on this while working at Move Networks / Echostar. We were trying to get the product through a beta cycle, but visibility into crashers was just not there. Our analytics team could see if CDN issues were causing stalls, or high CPU usage was causing dropped frames. Yet we didn’t know why set-top boxes were rebooting. It was a huge hole in our drive towards quality.
Certainly other crash handling and reporting frameworks exist. But to
my mind at the time, they were all too large and invasive. I needed
something that could be easily be shoved into an existing build
system, customized to multiple operating systems with at most a few
#defines, and was maleable about how and where crashes were
Kudos to my then-employer for allowing me to start this as an open-source project.