stack2struct parses raw golang stack traces ([]byte) to a slice of well formated structs.
$ go get github.com/kaeuferportal/stack2struct
package main
import (
"encoding/json"
"fmt"
"runtime"
"github.com/kaeuferportal/stack2struct"
)
type stackTraceElement struct {
LineNumber int `json:"lineNumber"`
ClassName string `json:"className"`
FileName string `json:"fileName"`
MethodName string `json:"methodName"`
}
type stackTrace []stackTraceElement
func (s *stackTrace) AddEntry(lineNumber int, packageName, fileName, methodName string) {
*s = append(*s, stackTraceElement{lineNumber, packageName, fileName, methodName})
}
func main() {
rawStackTrace := make([]byte, 1<<16)
rawStackTrace = rawStackTrace[:runtime.Stack(rawStackTrace, false)]
stack := make(stackTrace, 0, 0)
stack2struct.Parse(rawStackTrace, &stack)
enc, _ := json.MarshalIndent(stack, "", "\t")
fmt.Println(string(enc))
}
should print
[
{
"lineNumber": 27,
"className": "main",
"fileName": "test.go",
"methodName": "main()"
}
]
Have a bug or a feature request? Please first check the list of issues.
If your problem or idea is not addressed yet, please open a new issue, or contact us at oss@kaeuferportal.de.