Go语言打印调用堆栈
来源:互联网 发布:台湾庄园知乎 编辑:程序博客网 时间:2024/06/05 18:01
Go语言打印调用堆栈
这两天看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 +0x80main.test3() /tmp/test_stacktrace.go:17 +0x24main.test2() /tmp/test_stacktrace.go:13 +0x14main.test1() /tmp/test_stacktrace.go:9 +0x14main.main() /tmp/test_stacktrace.go:22 +0x14goroutine 1 [running]:runtime/debug.Stack(0x0, 0x0, 0x0) /usr/lib/golang/src/runtime/debug/stack.go:24 +0x80runtime/debug.PrintStack() /usr/lib/golang/src/runtime/debug/stack.go:16 +0x18main.test3() /tmp/test_stacktrace.go:18 +0x101main.test2() /tmp/test_stacktrace.go:13 +0x14main.test1() /tmp/test_stacktrace.go:9 +0x14main.main() /tmp/test_stacktrace.go:22 +0x14
阅读全文
0 0
- Go语言打印调用堆栈
- Go语言打印调用堆栈
- go 代码的调试---打印调用堆栈
- go打印堆栈
- 打印调用堆栈
- 打印调用堆栈
- IOS打印调用堆栈
- 打印函数调用堆栈
- 打印调用堆栈
- 打印调用堆栈
- 打印调用堆栈
- 打印调用堆栈
- android打印调用堆栈
- IOS打印调用堆栈
- lua打印调用堆栈
- JavaScript 打印调用堆栈
- 打印函数调用堆栈
- IOS打印调用堆栈
- 浅析 Linux 初始化 init 系统(1):sysvinit
- HotSpot的垃圾回收算法实现
- scala 随笔(2) scala构造函数 this
- 大数据量高并发的数据库优化详解
- try catch处理异常处理
- Go语言打印调用堆栈
- Linux 中Nohup 和&用法
- 杭电1278漂亮面料的设计(模拟题)
- django 实践所需 数据库操作
- 正则表达式函数exec、match、search
- STL源码剖析——空间配置器
- 【红黑树】【资料】
- js操作cookie及 json对象和json字符串的相互转换
- 洛阳hp,上课的第一天