panicparse helps make sense of Go crash dumps:
50% more compact output than original stack dump yet more readable.
go get github.com/maruel/panicparse/cmd/pp
pp streams its stdin to stdout as long as it doesn‘t detect any panic.
panic() and Go’s native deadlock detector print to stderr via the native
Bash v4 or zsh:
|& tells the shell to redirect stderr to stdout, it's an alias for
2>&1 | (bash v4, zsh):
go test -v |&pp
Windows or OSX native bash (which is 3.2.57): They don't have this shortcut, so use the long form:
go test -v 2>&1 | pp
Fish: It uses ^ for stderr redirection so the shortcut is
go test -v ^|pp
PowerShell: It has broken
2>&1 redirection. The workaround is to shell out to cmd.exe. :(
On POSIX, use
Ctrl-\ to send SIGQUIT to your process,
pp will ignore the signal and will parse the stack trace.
To dump to a file then parse, pass the file path of a stack trace
go test 2> stack.txt pp stack.txt
Starting with Go 1.6,
GOTRACEBACK defaults to
single instead of
1 that was used in 1.5 and before. To get all goroutines trace and not just the crashing one, set the environment variable:
set GOTRACEBACK=all on Windows. Probably worth to put it in your
Install bash v4+ on OSX via homebrew or macports. Your future self will appreciate having done that.
You may have the Perl PAR Packager installed. Use long name
go get github.com/maruel/panicparse