时间:2021-05-22
如下所示:
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.call4887585 D:/GoProject/src/ test/test5.go 15 true main.test4887481 D:/GoProject/src /test/test5.go 10 true main.main4383501 C:/Go/src/runtime/proc.go 198 true runtime.main0-3分别上当前函数,当前函数的上一个caller,....
补充:golang打印所有的runtime调用栈
我就废话不多说了,大家还是直接看代码吧~
import "runtime"buf := make([]byte, 1 << 20)runtime.Stack(buf, true)fmt.Printf("\n%s", buf)以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
支付宝的钱怎么转到银行卡支付宝使用说明支付宝的钱怎么转到银行卡支付宝使用说明支付宝的钱怎么转到银行卡支付宝使用说明支付宝的钱怎么转到银行卡支付宝使用说明支付宝的
一、caller返回一个对函数的引用,该函数调用了当前函数。functionName.callerfunctionName对象是所执行函数的名称。说明对于函数来
复制代码代码如下:/**函数名称:DateUtil*作者:yithcn*功能说明:日期函数*使用说明:*创建日期:2010.10.14*/varDateUtil
概述:@Valid是使用Hibernatevalidation的时候使用@Validated是只用SpringValidator校验机制使用说明:java的JS
使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制。查看使用说明,说明专门提到了是未经压缩的二进制形式。存储后的数据可以进行加载或者读取,通过使