目录

fmt.Printf 中使用下面的说明符来打印有关变量的相关信息:

  • %+v 打印包括字段在内的实例的完整信息

  • %#v 打印包括字段和限定类型名称在内的实例的完整信息

  • %T 打印某个类型的完整说明

  • 使用 panic 语句来获取栈跟踪信息直到 panic 时所有被调用函数的列表。

  • 使用关键字 defer 来跟踪代码执行过程。

// 用于调试跟踪 代码执行到何处
func marker() {
    _, file, line, _ := runtime.Caller(1)
    log.Printf("%s:%d", file, line)
}
func b() {
    defer un(trace("b"))     // 使用 defer 跟踪代码执行到何处
    fmt.Println("b业务代码")
    a()
}
func a() {
    defer un(trace("a"))     // 使用 defer 跟踪代码执行到何处
    fmt.Println("a业务代码")
}
func trace(s string) string {
    fmt.Println("entering:", s)
    return s
}
func un(s string) {
    fmt.Println("leaving:", s)
}