go 代码的调试---打印调用堆栈的实例

 更新时间:2017年10月30日 09:16:16   作者:奋翼者  
下面小编就为大家带来一篇go 代码的调试---打印调用堆栈的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

本文介绍如何打印调用堆栈进行go代码的调试。

打印堆栈使用的runtime package中的Stack()函数

func Stack(buf []byte, all bool) int
Stack formats a stack trace of the calling goroutine into buf and returns the number of bytes written to buf. If all is true, Stack formats stack traces of all other goroutines into buf after the trace for the current goroutine.

example

package main
import (
    "runtime"
    "time"
    "fmt"
)
func main() {
    go power1()
    for {
        time.Sleep(time.Duration(1)*time.Minute)
    }
}


func power1(){
    var buf [1024]byte
    fmt.Println("power1.....")
    n := runtime.Stack(buf[:], true)
    fmt.Println(string(buf[:]), n)
}

输出结果:

power1.....
goroutine 5 [running]:
main.power1()
/home/lanyang/src/t.go:29 +0xec
created by main.main
/home/lanyang/src/t.go:14 +0x3c
goroutine 1 [sleep]:
time.Sleep(0xdf8475800)
/home/lanyang/src/t.go:59 +0x107
main.main()
/home/lanyang/src/t.go:17 +0x4f
303

以上这篇go 代码的调试---打印调用堆栈的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 一文深入探索Go语言中的循环结构

    一文深入探索Go语言中的循环结构

    在编程中,循环结构扮演着重要的角色,它使我们能够有效地重复执行特定的代码块,以实现各种任务和逻辑,在Go语言中,for 是 Go 中唯一的循环结构,本文将深入探讨Go语言中的for循环类型以及它们的用法
    2023-08-08
  • 聊聊Go语言编译github上的项目遇到的坑

    聊聊Go语言编译github上的项目遇到的坑

    这篇文章主要介绍了解决Go语言编译github上的项目遇到的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • go语言中Timer和Ticker两种计时器的使用

    go语言中Timer和Ticker两种计时器的使用

    go语言中有Timer和Ticker这样的两种计时器,两种计时器分别实现了不同的计时功能,本文主要介绍了go语言中Timer和Ticker两种计时器的使用,感兴趣的可以了解一下
    2024-08-08
  • Go实现文件分片上传

    Go实现文件分片上传

    这篇文章主要为大家详细介绍了Go实现文件分片上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • go实现base64编码的四种方式

    go实现base64编码的四种方式

    本文主要介绍了go实现base64编码的四种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • golang 获取字符串长度的案例

    golang 获取字符串长度的案例

    这篇文章主要介绍了golang 获取字符串长度的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 详解Go是如何优雅的进行内存管理

    详解Go是如何优雅的进行内存管理

    Go语言抛弃C/C++中的开发者管理内存的方式,实现了主动申请与主动释放管理,增加了逃逸分析和垃圾回收,将开发者从内存管理中释放出来,作为进阶的Go开发,了解掌握Go的内存管理还是很有必要的
    2023-09-09
  • go module构建项目的实现

    go module构建项目的实现

    本文主要介绍了go module构建项目的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • go GCM gin中间件的加密解密文件流处理

    go GCM gin中间件的加密解密文件流处理

    这篇文章主要介绍了go语言 GCM加密解密,gin中间件的加密解密及文件流处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-05-05
  • 关于Golang中for-loop与goroutine的问题详解

    关于Golang中for-loop与goroutine的问题详解

    这篇文章主要给大家介绍了关于Golang中for-loop与goroutine问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用golang具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-09-09

最新评论