Commit 8da91a62 authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

runtime: add Frames example

Based on sample code from iant.

Fixes #18788.

Change-Id: I6bb33ed05af2538fbde42ddcac629280ef7c00a6
Reviewed-on: https://go-review.googlesource.com/36892
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
parent 39fcf8bf
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package runtime_test
import (
"fmt"
"runtime"
)
func ExampleFrames() {
c := func() {
pc := make([]uintptr, 5)
n := runtime.Callers(0, pc)
if n == 0 {
return
}
frames := runtime.CallersFrames(pc[:n])
var frame runtime.Frame
more := true
for more {
frame, more = frames.Next()
fmt.Printf("- more:%v | %s\n", more, frame.Function)
}
}
b := func() { c() }
a := func() { b() }
a()
// Output:
// - more:true | runtime.Callers
// - more:true | runtime_test.ExampleFrames.func1
// - more:true | runtime_test.ExampleFrames.func2
// - more:true | runtime_test.ExampleFrames.func3
// - more:false | runtime_test.ExampleFrames
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment