Commit 986a1d2d authored by Dmitry Vyukov's avatar Dmitry Vyukov

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/1452Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
parent 5288fadb
......@@ -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) }
......
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