1
0
mirror of https://github.com/golang/go synced 2024-09-23 21:20:13 -06:00

runtime/pprof: add tracing support

runtime/pprof part of tracing functionality:
https://docs.google.com/document/u/1/d/1FP5apqzBgr7ahCCgFO-yoVhk4YZrNIDNf9RybngBc14/pub
Full change:
https://codereview.appspot.com/146920043

Change-Id: I3143a569cbd33576f19ca47308d1ff5200d8c955
Reviewed-on: https://go-review.googlesource.com/1452
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Dmitry Vyukov 2014-12-12 18:56:36 +01:00
parent 5288fadbdc
commit 986a1d2d1c

View File

@ -615,6 +615,33 @@ func StopCPUProfile() {
<-cpu.done
}
// TODO(rsc): Decide if StartTrace belongs in this package.
// See golang.org/issue/9710.
// StartTrace enables tracing for the current process.
// While tracing, the trace will be buffered and written to w.
// StartTrace returns an error if profiling is tracing enabled.
func StartTrace(w io.Writer) error {
if err := runtime.StartTrace(); err != nil {
return err
}
go func() {
for {
data := runtime.ReadTrace()
if data == nil {
break
}
w.Write(data)
}
}()
return nil
}
// StopTrace stops the current tracing, if any.
// StopTrace only returns after all the writes for the trace have completed.
func StopTrace() {
runtime.StopTrace()
}
type byCycles []runtime.BlockProfileRecord
func (x byCycles) Len() int { return len(x) }