diff --git a/sysutils.go b/sysutils.go index 3ce82e2..e77ff6a 100644 --- a/sysutils.go +++ b/sysutils.go @@ -213,23 +213,46 @@ func GetTypeName(v interface{}) string { func PrintCallStack() { // 获取当前函数的调用者信息 - pc, file, line, ok := runtime.Caller(1) - if !ok { - fmt.Println("runtime.Caller error") - return - } - - funcName := runtime.FuncForPC(pc).Name() - fmt.Printf("Function: %s\nFile: %s\nLine: %d\n", funcName, file, line) - - // 使用Stack打印完整的调用栈信息,可以用于debug - buf := make([]byte, 1024) - for { - n := runtime.Stack(buf, false) - if n < len(buf) { - break + pc, file, line, ok := runtime.Caller(1) + if !ok { + fmt.Println("runtime.Caller error") + return } - buf = make([]byte, 2*len(buf)) - } - fmt.Println(string(buf)) + + funcName := runtime.FuncForPC(pc).Name() + fmt.Printf("Function: %s\nFile: %s\nLine: %d\n", funcName, file, line) + + // 使用Stack打印完整的调用栈信息,可以用于debug + buf := make([]byte, 1024) + for { + n := runtime.Stack(buf, false) + if n < len(buf) { + break + } + buf = make([]byte, 2*len(buf)) + } + fmt.Println(string(buf)) +} + +func GetCallStack() string { +// 获取当前函数的调用者信息 + pc, file, line, ok := runtime.Caller(1) + if !ok { + fmt.Println("runtime.Caller error") + return "" + } + + funcName := runtime.FuncForPC(pc).Name() + fmt.Printf("Function: %s\nFile: %s\nLine: %d\n", funcName, file, line) + + // 使用Stack打印完整的调用栈信息,可以用于debug + buf := make([]byte, 1024) + for { + n := runtime.Stack(buf, false) + if n < len(buf) { + break + } + buf = make([]byte, 2*len(buf)) + } + return string(buf) }