For tracing purpose, I'd like to print out current function name, like the __FUNCTION__
macro in gcc.
So that when I have a function
func foo () { trace() }
it will automatically print out Entering foo()...
or something like that.
[Note: Go 1.7+ recommends using runtime.CallersFrames
instead of runtime.FuncForPC
; another answer has an updated example].
Package runtime is your friend here:
func trace() { pc := make([]uintptr, 10) // at least 1 entry needed runtime.Callers(2, pc) f := runtime.FuncForPC(pc[0]) file, line := f.FileLine(pc[0]) fmt.Printf("%s:%d %s\n", file, line, f.Name()) }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With