(call *CallStack)
| 43 | } |
| 44 | |
| 45 | func CallStacksString(call *CallStack) string { |
| 46 | buf := bytes.Buffer{} |
| 47 | if call == nil { |
| 48 | return fmt.Sprintf("No call stack available") |
| 49 | } |
| 50 | |
| 51 | for _, stack := range call.Stacks { |
| 52 | f := runtime.FuncForPC(stack) |
| 53 | file, line := f.FileLine(stack) |
| 54 | buf.WriteString(fmt.Sprintf("%s:%d - %s\n", file, line, f.Name())) |
| 55 | } |
| 56 | |
| 57 | return fmt.Sprintf("%s", buf.Bytes()) |
| 58 | } |
| 59 | |
| 60 | func getCallStack(skip int, depth int) *CallStack { |
| 61 | stacks := make([]uintptr, depth) |