github.com/mem/u-root@v2.0.1-0.20181004165302-9b18b4636a33+incompatible/cmds/elvish/eval/builtin_fn_debug.go (about) 1 package eval 2 3 import ( 4 "runtime" 5 6 "github.com/u-root/u-root/cmds/elvish/util" 7 ) 8 9 func init() { 10 addBuiltinFns(map[string]interface{}{ 11 "src": src, 12 "-gc": _gc, 13 "-stack": _stack, 14 "-log": _log, 15 }) 16 } 17 18 func src(fm *Frame) *Source { 19 return fm.srcMeta 20 } 21 22 func _gc() { 23 runtime.GC() 24 } 25 26 func _stack(fm *Frame) { 27 out := fm.ports[1].File 28 // XXX dup with main.go 29 buf := make([]byte, 1024) 30 for runtime.Stack(buf, true) == cap(buf) { 31 buf = make([]byte, cap(buf)*2) 32 } 33 out.Write(buf) 34 } 35 36 func _log(fname string) error { 37 return util.SetOutputFile(fname) 38 }