24 lines
362 B
Go
24 lines
362 B
Go
package missinggo
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"runtime"
|
|
)
|
|
|
|
func WriteStack(w io.Writer, stack []uintptr) {
|
|
for _, pc := range stack {
|
|
if pc == 0 {
|
|
break
|
|
}
|
|
pc--
|
|
f := runtime.FuncForPC(pc)
|
|
if f.Name() == "runtime.goexit" {
|
|
continue
|
|
}
|
|
file, line := f.FileLine(pc)
|
|
fmt.Fprintf(w, "# %s:\t%s:%d\n", f.Name(), file, line)
|
|
}
|
|
fmt.Fprintf(w, "\n")
|
|
}
|