golang 打印调用堆栈
这两天看Go的代码,呃,协程太多,无数个携程调用了一个方法,彻底看不清了,所以就想到是不是可以把调用堆栈打印出来。
查了一下,发现Go的 runtime/debug 库可以把调用堆栈打出来。下面看个例子:
package mainimport ("fmt""runtime/debug"
)func test1() {test2()
}func test2() {test3()
}func test3() {fmt.Printf("%s", debug.Stack())debug.PrintStack()
}func main() {test1()
}
从上面代码可以看出,可以通过 debug.PrintStack() 直接打印,也可以通过 debug.Stack() 方法获取堆栈然后自己打印。
运行测试
$ go run test_stacktrace.gogoroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)/usr/lib/golang/src/runtime/debug/stack.go:24 +0x80
main.test3()/tmp/test_stacktrace.go:17 +0x24
main.test2()/tmp/test_stacktrace.go:13 +0x14
main.test1()/tmp/test_stacktrace.go:9 +0x14
main.main()/tmp/test_stacktrace.go:22 +0x14goroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)/usr/lib/golang/src/runtime/debug/stack.go:24 +0x80
runtime/debug.PrintStack()/usr/lib/golang/src/runtime/debug/stack.go:16 +0x18
main.test3()/tmp/test_stacktrace.go:18 +0x101
main.test2()/tmp/test_stacktrace.go:13 +0x14
main.test1()/tmp/test_stacktrace.go:9 +0x14
main.main()/tmp/test_stacktrace.go:22 +0x14
golang 打印调用堆栈相关推荐
- PHP打印调用堆栈的三种方法
目录 一.debug_print_backtrace() 二.debug_backtrace() 三.Exception类中的getTraceAsString()成员函数返回一个调用堆栈 一.debu ...
- php 打印堆栈,PHP怎么打印调用堆栈
在给定的PHP代码中,child_func()函数调用parent_func()函数,该函数进一步调用grandparent_func()函数,从而生成调用堆栈. 推荐学习:<PHP教程> ...
- PHP 打印调用堆栈信息
2019独角兽企业重金招聘Python工程师标准>>> 在PHP中发生错我,我们使用set_error_handler进行处理,如果发生异常,则使用set_exception_han ...
- PHP打印调用堆栈信息,用于程序调试
博客搬家:由于各种原因,我现在的博客将首发于blog.mojijs.com, 可以百度搜索 "姜哥的墨迹技术博客" , 或者 点击这里 本文首发地址 http://blog.moj ...
- libuv 编译使用,打印调用堆栈
libuv 编译选项: CFLAGS='-g -O0 -funwind-tables' ./configure --disable-silent-rules --disable-udev --enab ...
- java打印调用堆栈的方式
Log.d(TAG,Log.getStackTraceString(new Throwable()));
- 【nginx http flv 】ATC追踪:播放器拉流的调用堆栈及时间戳打印1
nginx rtmp flv 模块应该没有atc模式,跟踪下代码看看. obs rtmp 推流给 nginx vlc 从nginx 拉流播放 启用GOP 打印调用堆栈 打印时间戳 http flv 请 ...
- 在Linux中打印函数调用堆栈【原创】
本人学习笔记,代码参考如下网址 参考http://www.cnblogs.com/dma1982/archive/2012/02/08/2342215.html zhangbh@prolin-srv: ...
- 转:eclipse 调用堆栈 快捷键
转自:http://www.verydemo.com/demo_c288_i65529.html Eclipse 修改Eclipse堆栈大小 修改Eclipse堆栈大小 -Xmx512M-Xms512 ...
最新文章
- 将一个字符串计算出CRC16/XMODEM校验码(4位)
- DirectX9 SDK 下载、安装、VC++开发环境配置、跑通第一个例子
- spark性能优化 -- spark工作原理
- 学成在线--11.RabbitMQ快速入门
- Scala 语法基础
- 一个O-RAN YANG语言文件:o-ran-interfaces.yang
- 消防物联网,为逆行英雄守住第一道生命线
- windows10 记事本进程 键盘消息钩子 dll注入
- Linux/Unix如何将日志发送到日志服务器
- 计算机命令提示符开热点,将win7电脑变身wifi热点操作方法_电脑怎么开热点win7...
- win10 支持ubuntu命令行的版本1607 产品密匙
- java跳转页面后再跳回前一个页面_js中实现页面跳转(返回前一页、后一页)
- iiOS 6 新特性
- 青春是一场不失不忘的期许
- 汽车电子之功能安全介绍
- lombok var和java var 如何抉择使用?
- 1064: [Noi2008]假面舞会
- Windows 10下配置高通hexagon sdk环境
- c++ pair 用法详解
- r语言 matlab 函数定义,R语言-编写自定义函数 ZZ