From 7f080f238eccff90620af8c5b167b3ed5b90783b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 9 Apr 2024 14:56:56 +0800 Subject: [PATCH] 1 --- sysutils.go | 59 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 18 deletions(-) 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) }