对Golang中的runtime.Caller使用说明

作者:思维的深度 时间:2024-05-21 10:24:43 

如下所示:

func Caller(skip int) (pc uintptr, file string, line int, ok bool)

参数:skip是要提升的堆栈帧数,0-当前函数,1-上一层函数,....

返回值:

pc是uintptr这个返回的是函数指针

file是函数所在文件名目录

line所在行号

ok 是否可以获取到信息

示例:

我们分别打印skip为0-3的相关信息


package main
import (
"fmt"
"runtime"
)

func main() {
for i := 0 ; i< 4; i++ {
test(i)
}
}

func test(skip int) {
call(skip)
}

func call(skip int) {
pc,file,line,ok := runtime.Caller(skip)
pcName := runtime.FuncForPC(pc).Name() //获取函数名
fmt.Println(fmt.Sprintf("%v %s %d %t %s",pc,file,line,ok,pcName))
}

结果:


4887700 D:/GoProject/src /test/test5.go 19 true main.call
4887585 D:/GoProject/src/ test/test5.go 15 true main.test
4887481 D:/GoProject/src /test/test5.go 10 true main.main
4383501 C:/Go/src/runtime/proc.go 198 true runtime.main

分析结果可以看到

0-3分别上当前函数,当前函数的上一个caller,....

补充:golang打印所有的runtime调用栈

我就废话不多说了,大家还是直接看代码吧~


import "runtime"
buf := make([]byte, 1 << 20)
runtime.Stack(buf, true)
fmt.Printf("\n%s", buf)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://skaygo.blog.csdn.net/article/details/100042494

标签:Golang,runtime,Caller
0
投稿

猜你喜欢

  • python基础之循环语句

    2022-03-14 23:00:53
  • python入门学习笔记分享

    2023-01-29 17:46:16
  • Pickle模块中的dump()和load()方法简介

    2023-03-21 04:18:06
  • 如何基于python把文字图片写入word文档

    2021-04-20 06:48:49
  • Vue 2.0 服务端渲染入门介绍

    2023-07-02 16:58:52
  • 关于数据库中保留小数位的问题

    2024-01-13 13:34:45
  • 使用Python的Scrapy框架编写web爬虫的简单示例

    2023-08-03 12:37:50
  • 手把手带你了解Python数据分析--matplotlib

    2022-05-21 22:07:18
  • python实现猜拳游戏项目

    2023-02-25 15:15:30
  • python 网络编程要点总结

    2023-09-30 06:15:38
  • JavaScript中自带的 reduce()方法使用示例详解

    2024-02-24 09:37:11
  • python爬虫爬取指定内容的解决方法

    2022-11-07 11:32:12
  • python sklearn 画出决策树并保存为PDF的实现过程

    2023-08-05 00:23:54
  • Python opencv应用实现图片切分操作示例

    2021-12-25 03:45:39
  • 使用Vue.js和MJML创建响应式电子邮件

    2023-07-02 17:08:59
  • MYSQL删除匿名用户的方法(提高安全性)

    2024-01-26 23:04:48
  • 简单的Apache+FastCGI+Django配置指南

    2021-01-27 10:09:16
  • 用Python实现一个模仿UP主弹幕控制的直播间功能

    2023-02-24 18:13:27
  • Pandas实现一列数据分隔为两列

    2021-01-06 04:31:36
  • Python实现12种降维算法的示例代码

    2023-03-17 14:04:21
  • asp之家 网络编程 m.aspxhome.com