37 lines
533 B
Go
37 lines
533 B
Go
package pprofutil
|
|
|
|
import (
|
|
"os"
|
|
"runtime/pprof"
|
|
)
|
|
|
|
type Profile struct {
|
|
*pprof.Profile
|
|
|
|
Path string
|
|
Debug int
|
|
}
|
|
|
|
func NewProfile(name, path string, debug int) *Profile {
|
|
p := &Profile{Profile: pprof.NewProfile(name), Path: path, Debug: debug}
|
|
return p
|
|
}
|
|
|
|
func (p *Profile) Stop() {
|
|
f, err := os.Create(p.Path)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
if err := p.WriteTo(f, p.Debug); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if err := f.Close(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
println("pprof profile written:", p.Path)
|
|
}
|