From ca63f541c329985270ba69429981ef20e568f7f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisend=C3=B6rfer?= Date: Mon, 24 May 2021 11:50:26 +0200 Subject: [PATCH] examples --- examples/delve-trace/go.mod | 3 +++ examples/delve-trace/main.go | 24 ++++++++++++++++++++++++ examples/frame-order/frames.txt | 13 +++++++++++++ examples/frame-order/go.mod | 3 +++ examples/frame-order/main.go | 21 +++++++++++++++++++++ 5 files changed, 64 insertions(+) create mode 100644 examples/delve-trace/go.mod create mode 100644 examples/delve-trace/main.go create mode 100644 examples/frame-order/frames.txt create mode 100644 examples/frame-order/go.mod create mode 100644 examples/frame-order/main.go diff --git a/examples/delve-trace/go.mod b/examples/delve-trace/go.mod new file mode 100644 index 0000000..c73f106 --- /dev/null +++ b/examples/delve-trace/go.mod @@ -0,0 +1,3 @@ +module github.com/felixge/go-profiler-notes/examples/delve-trace + +go 1.16 diff --git a/examples/delve-trace/main.go b/examples/delve-trace/main.go new file mode 100644 index 0000000..36f6ba4 --- /dev/null +++ b/examples/delve-trace/main.go @@ -0,0 +1,24 @@ +package main + +import ( + "fmt" + "os" +) + +func main() { + if err := run(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} + +func run() error { + for i := 0; i < 10; i++ { + foo(i) + } + return nil +} + +func foo(i int) int { + return i * 2 +} diff --git a/examples/frame-order/frames.txt b/examples/frame-order/frames.txt new file mode 100644 index 0000000..a999441 --- /dev/null +++ b/examples/frame-order/frames.txt @@ -0,0 +1,13 @@ +goroutine 1 [running]: +runtime/pprof.writeGoroutineStacks(0x111e660, 0xc0000a0018, 0x30, 0x12b3aa8) + /usr/local/Cellar/go/1.15.7_1/libexec/src/runtime/pprof/pprof.go:693 +0x9f +runtime/pprof.writeGoroutine(0x111e660, 0xc0000a0018, 0x2, 0x0, 0x602e6537) + /usr/local/Cellar/go/1.15.7_1/libexec/src/runtime/pprof/pprof.go:682 +0x45 +runtime/pprof.(*Profile).WriteTo(0x11ae4e0, 0x111e660, 0xc0000a0018, 0x2, 0xc0000a0020, 0x0) + /usr/local/Cellar/go/1.15.7_1/libexec/src/runtime/pprof/pprof.go:331 +0x3f2 +main.bar() + /Users/felix.geisendoerfer/go/src/github.com/felixge/go-profiler-notes/examples/frame-order/main.go:19 +0xd5 +main.foo(...) + /Users/felix.geisendoerfer/go/src/github.com/felixge/go-profiler-notes/examples/frame-order/main.go:13 +main.main() + /Users/felix.geisendoerfer/go/src/github.com/felixge/go-profiler-notes/examples/frame-order/main.go:9 +0x25 diff --git a/examples/frame-order/go.mod b/examples/frame-order/go.mod new file mode 100644 index 0000000..d22e7fe --- /dev/null +++ b/examples/frame-order/go.mod @@ -0,0 +1,3 @@ +module github.com/felixge/go-profiler-notes/examples/frame-order + +go 1.15 diff --git a/examples/frame-order/main.go b/examples/frame-order/main.go new file mode 100644 index 0000000..cc1e232 --- /dev/null +++ b/examples/frame-order/main.go @@ -0,0 +1,21 @@ +package main + +import ( + "os" + "runtime/pprof" +) + +func main() { + foo() +} + +func foo() { + bar() +} +func bar() { + debug2, _ := os.Create("frames.txt") + debug0, _ := os.Create("frames.pb.gz") + + pprof.Lookup("goroutine").WriteTo(debug2, 2) + pprof.Lookup("goroutine").WriteTo(debug0, 0) +}