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  }