zoukankan      html  css  js  c++  java
  • golang在日志中打印堆栈信息

    使用debug.Stack()

    package main
     
    import (
        "fmt"
        "runtime/debug"
    )
     
    func test1() {
        test2()
    }
     
    func test2() {
        test3()
    }
     
    func test3() {
        // 可以通过 debug.PrintStack() 直接打印,也可以通过 debug.Stack() 方法获取堆栈然后自己打印
        fmt.Printf("%s", debug.Stack())
        debug.PrintStack()
    }
     
    func main() {
        test1()
    }
     
    ------------------------------------
     
    $ go run test_stacktrace.go
     
    goroutine 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 +0x14
     
    goroutine 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
     
  • 相关阅读:
    Thread类常用方法
    sql 语句NVL()用法
    SQL极限函数limit()详解<分页必备>
    查询用户上次登录时间问题
    ROWNUM-Oracle中的分页代码
    分组统计查询
    Oracle中的多表查询
    Oracle中的单行函数
    JDBC中的事务-Transaction
    MySql中增加一列
  • 原文地址:https://www.cnblogs.com/peteremperor/p/14467192.html
Copyright © 2011-2022 走看看