GO语言"runtime"包中"Frames"类型的用法及代码示例。
帧可用于获取调用者返回的 PC 值切片的函数/文件/行信息。
用法:
type Frames struct {
// contains filtered or unexported fields
}
例子:
package main
import (
"fmt"
"runtime"
"strings"
)
func main() {
c := func() {
// Ask runtime.Callers for up to 10 PCs, including runtime.Callers itself.
pc := make([]uintptr, 10)
n := runtime.Callers(0, pc)
if n == 0 {
// No PCs available. This can happen if the first argument to
// runtime.Callers is large.
//
// Return now to avoid processing the zero Frame that would
// otherwise be returned by frames.Next below.
return
}
pc = pc[:n] // pass only valid pcs to runtime.CallersFrames
frames := runtime.CallersFrames(pc)
// Loop to get frames.
// A fixed number of PCs can expand to an indefinite number of Frames.
for {
frame, more := frames.Next()
// Process this frame.
//
// To keep this example's output stable
// even if there are changes in the testing package,
// stop unwinding when we leave package runtime.
if !strings.Contains(frame.File, "runtime/") {
break
}
fmt.Printf("- more:%v | %s\n", more, frame.Function)
// Check whether there are more frames to process after this one.
if !more {
break
}
}
}
b := func() { c() }
a := func() { b() }
a()
}
输出:
- more:true | runtime.Callers - more:true | runtime_test.ExampleFrames.func1 - more:true | runtime_test.ExampleFrames.func2 - more:true | runtime_test.ExampleFrames.func3 - more:true | runtime_test.ExampleFrames
相关用法
- GO Fscanln用法及代码示例
- GO Float.SetString用法及代码示例
- GO FileServer用法及代码示例
- GO FieldsFunc用法及代码示例
- GO Fprintln用法及代码示例
- GO FormatMediaType用法及代码示例
- GO Float64s用法及代码示例
- GO Fprintf用法及代码示例
- GO Fprint用法及代码示例
- GO Floor用法及代码示例
- GO FormatUint用法及代码示例
- GO FormatBool用法及代码示例
- GO Float64sAreSorted用法及代码示例
- GO Float.Scan用法及代码示例
- GO FormatFloat用法及代码示例
- GO FileMode用法及代码示例
- GO FullRune用法及代码示例
- GO FullRuneInString用法及代码示例
- GO Float.Add用法及代码示例
- GO Func用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 Frames。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。