runtime/trace: add new package

Move tracing functions from runtime/pprof to the new runtime/trace package.

Fixes #9710

Change-Id: I718bcb2ae3e5959d9f72cab5e6708289e5c8ebd5
Reviewed-on: https://go-review.googlesource.com/12511
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Dmitry Vyukov 2015-07-22 13:09:26 +02:00 committed by Russ Cox
parent 1a99ba55df
commit ae1ea2aa94
9 changed files with 102 additions and 84 deletions

View file

@ -150,6 +150,7 @@ import (
"os"
"runtime"
"runtime/pprof"
"runtime/trace"
"strconv"
"strings"
"sync"
@ -180,7 +181,7 @@ var (
cpuProfile = flag.String("test.cpuprofile", "", "write a cpu profile to the named file during execution")
blockProfile = flag.String("test.blockprofile", "", "write a goroutine blocking profile to the named file after execution")
blockProfileRate = flag.Int("test.blockprofilerate", 1, "if >= 0, calls runtime.SetBlockProfileRate()")
trace = flag.String("test.trace", "", "write an execution trace to the named file after execution")
traceFile = flag.String("test.trace", "", "write an execution trace to the named file after execution")
timeout = flag.Duration("test.timeout", 0, "if positive, sets an aggregate time limit for all tests")
cpuListStr = flag.String("test.cpu", "", "comma-separated list of number of CPUs to use for each test")
parallel = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "maximum test parallelism")
@ -605,13 +606,13 @@ func before() {
}
// Could save f so after can call f.Close; not worth the effort.
}
if *trace != "" {
f, err := os.Create(toOutputDir(*trace))
if *traceFile != "" {
f, err := os.Create(toOutputDir(*traceFile))
if err != nil {
fmt.Fprintf(os.Stderr, "testing: %s", err)
return
}
if err := pprof.StartTrace(f); err != nil {
if err := trace.Start(f); err != nil {
fmt.Fprintf(os.Stderr, "testing: can't start tracing: %s", err)
f.Close()
return
@ -632,8 +633,8 @@ func after() {
if *cpuProfile != "" {
pprof.StopCPUProfile() // flushes profile to disk
}
if *trace != "" {
pprof.StopTrace() // flushes trace to disk
if *traceFile != "" {
trace.Stop() // flushes trace to disk
}
if *memProfile != "" {
f, err := os.Create(toOutputDir(*memProfile))