这两天看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 打印调用堆栈相关推荐

  1. PHP打印调用堆栈的三种方法

    目录 一.debug_print_backtrace() 二.debug_backtrace() 三.Exception类中的getTraceAsString()成员函数返回一个调用堆栈 一.debu ...

  2. php 打印堆栈,PHP怎么打印调用堆栈

    在给定的PHP代码中,child_func()函数调用parent_func()函数,该函数进一步调用grandparent_func()函数,从而生成调用堆栈. 推荐学习:<PHP教程> ...

  3. PHP 打印调用堆栈信息

    2019独角兽企业重金招聘Python工程师标准>>> 在PHP中发生错我,我们使用set_error_handler进行处理,如果发生异常,则使用set_exception_han ...

  4. PHP打印调用堆栈信息,用于程序调试

    博客搬家:由于各种原因,我现在的博客将首发于blog.mojijs.com, 可以百度搜索 "姜哥的墨迹技术博客" , 或者 点击这里 本文首发地址 http://blog.moj ...

  5. libuv 编译使用,打印调用堆栈

    libuv 编译选项: CFLAGS='-g -O0 -funwind-tables' ./configure --disable-silent-rules --disable-udev --enab ...

  6. java打印调用堆栈的方式

    Log.d(TAG,Log.getStackTraceString(new Throwable()));

  7. 【nginx http flv 】ATC追踪:播放器拉流的调用堆栈及时间戳打印1

    nginx rtmp flv 模块应该没有atc模式,跟踪下代码看看. obs rtmp 推流给 nginx vlc 从nginx 拉流播放 启用GOP 打印调用堆栈 打印时间戳 http flv 请 ...

  8. 在Linux中打印函数调用堆栈【原创】

    本人学习笔记,代码参考如下网址 参考http://www.cnblogs.com/dma1982/archive/2012/02/08/2342215.html zhangbh@prolin-srv: ...

  9. 转:eclipse 调用堆栈 快捷键

    转自:http://www.verydemo.com/demo_c288_i65529.html Eclipse 修改Eclipse堆栈大小 修改Eclipse堆栈大小 -Xmx512M-Xms512 ...

最新文章

  1. 将一个字符串计算出CRC16/XMODEM校验码(4位)
  2. DirectX9 SDK 下载、安装、VC++开发环境配置、跑通第一个例子
  3. spark性能优化 -- spark工作原理
  4. 学成在线--11.RabbitMQ快速入门
  5. Scala 语法基础
  6. 一个O-RAN YANG语言文件:o-ran-interfaces.yang
  7. 消防物联网,为逆行英雄守住第一道生命线
  8. windows10 记事本进程 键盘消息钩子 dll注入
  9. Linux/Unix如何将日志发送到日志服务器
  10. 计算机命令提示符开热点,将win7电脑变身wifi热点操作方法_电脑怎么开热点win7...
  11. win10 支持ubuntu命令行的版本1607 产品密匙
  12. java跳转页面后再跳回前一个页面_js中实现页面跳转(返回前一页、后一页)
  13. iiOS 6 新特性
  14. 青春是一场不失不忘的期许
  15. 汽车电子之功能安全介绍
  16. lombok var和java var 如何抉择使用?
  17. 1064: [Noi2008]假面舞会
  18. Windows 10下配置高通hexagon sdk环境
  19. c++ pair 用法详解
  20. r语言 matlab 函数定义,R语言-编写自定义函数 ZZ

热门文章

  1. 为Keil添加注释的快捷键
  2. 解决chrome浏览器us-yahoo.com搜索劫持
  3. Java NIO系列教程(一) Java NIO 概述
  4. ChemDraw在苹果电脑上能不能用
  5. 【数据结构】C语言栈的基本操作
  6. WINDOWS SERVER 2003 AD中的5种操作主机
  7. 企业架构(EA)美国之行
  8. 我们需要现在就进入LTE时代
  9. SQLite.NET提供程序的选择
  10. .net中窗体之间的数据交换总结