driver: add -trace to record execution trace
This adds a -trace flag to specify a file name for recording an
execution trace of the benchmark. This flag parallels go test -trace.
Change-Id: Ie01ca39699dea246f549212f2be78f18aa0835c9
Reviewed-on: https://go-review.googlesource.com/6830
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
diff --git a/driver/driver.go b/driver/driver.go
index 85644a7..4356528 100644
--- a/driver/driver.go
+++ b/driver/driver.go
@@ -38,6 +38,7 @@
affinity = flag.Int("affinity", 0, "process affinity (passed to an OS-specific function like sched_setaffinity/SetProcessAffinityMask)")
tmpDir = flag.String("tmpdir", os.TempDir(), "dir for temporary files")
genSvg = flag.Bool("svg", false, "generate svg profiles")
+ trace = flag.String("trace", "", "write an execution trace to the named file after execution")
BenchNum int
BenchMem int
@@ -80,6 +81,20 @@
return
}
+ if *trace != "" {
+ f, err := os.Create(*trace)
+ if err != nil {
+ fmt.Fprintln(os.Stderr, err)
+ os.Exit(1)
+ }
+ defer f.Close()
+ if err := pprof.StartTrace(f); err != nil {
+ fmt.Fprintf(os.Stderr, "can't start tracing: %s\n", err)
+ os.Exit(1)
+ }
+ defer pprof.StopTrace()
+ }
+
res := f()
var metrics []string