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")
 | 
						|
}
 |