30 lines
507 B
Go
30 lines
507 B
Go
package errors
|
|
|
|
import (
|
|
"runtime"
|
|
"strings"
|
|
)
|
|
|
|
// Stack generates a stack trace.
|
|
func Stack() string {
|
|
var (
|
|
final []string
|
|
buffer = make([]byte, 4096)
|
|
n = runtime.Stack(buffer, false)
|
|
stack = string(buffer[:n])
|
|
lines = strings.Split(stack, "\n")
|
|
)
|
|
|
|
for i := 6; i < len(lines); i += 2 {
|
|
line := strings.TrimSpace(lines[i])
|
|
space := strings.LastIndex(line, " ")
|
|
|
|
if space != -1 {
|
|
line = line[:space]
|
|
}
|
|
|
|
final = append(final, line)
|
|
}
|
|
|
|
return strings.Join(final, "\n")
|
|
}
|