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:
parent
5288fadbdc
commit
986a1d2d1c
@ -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) }
|
||||
|
Loading…
Reference in New Issue
Block a user