• 欢迎访问周知博客,每周记录新知识
  • 祝各位学得开心!!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

golang如何得知调用来源

工作技术 admin 4周前 (04-06) 42次浏览 0个评论

在Go语言中,你可以使用标准库中的runtime包来获取调用栈信息,从而确定函数的调用源头。下面是一个简单的示例,展示了如何打印出当前goroutine的调用栈:

package main
import (
    "fmt"
    "runtime"
)
func printStackTrace() {
    // 分配足够大的内存来打印调用栈
    stackBuf := make([]byte, 1024)
    for {
        n := runtime.Stack(stackBuf, false)
        if n < len(stackBuf) {
            // 调用栈打印完成
            fmt.Println(string(stackBuf[:n]))
            break
        }
        // 调用栈太大,重新分配更大的内存并再次尝试打印
        stackBuf = make([]byte, 2*len(stackBuf))
    }
}
func main() {
    printStackTrace()
}

这段代码会打印出当前goroutine的调用栈信息。如果你想要在特定的函数中打印调用栈,只需要在那个函数内调用printStackTrace即可。
请注意,调用栈信息可能非常长,包含了多个帧,每个帧代表一个函数调用。你可以通过分析这些信息来确定调用源头。


周知博客, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:golang如何得知调用来源
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址