package trace
import "runtime/trace"
Package trace contains facilities for programs to generate trace for Go execution tracer.
The execution trace captures a wide range of execution events such as goroutine creation/blocking/unblocking, syscall enter/exit/block, GC-related events, changes of heap size, processor start/stop, etc. A precise nanosecond-precision timestamp and a stack trace is captured for most events. The generated trace can be interpreted using `go tool trace`.
Tracing a Go program
Support for tracing tests and benchmarks built with the standard testing package is built into `go test`. For example, the following command runs the test in the current directory and writes the trace file (trace.out).
go test -trace=test.out
This runtime/trace package provides APIs to add equivalent tracing support to a standalone program. See the Example that demonstrates how to use this API to enable tracing.
There is also a standard HTTP interface to profiling data. Adding the following line will install handlers under the /debug/pprof/trace URL to download live profiles:
import _ "net/http/pprof"
See the net/http/pprof package for more details.
Example demonstrates the use of the trace package to trace
the execution of a Go program. The trace output will be
written to the file trace.out
Code:play
Example¶
package main
import (
"fmt"
"log"
"os"
"runtime/trace"
)
// Example demonstrates the use of the trace package to trace
// the execution of a Go program. The trace output will be
// written to the file trace.out
func main() {
f, err := os.Create("trace.out")
if err != nil {
log.Fatalf("failed to create trace output file: %v", err)
}
defer func() {
if err := f.Close(); err != nil {
log.Fatalf("failed to close trace file: %v", err)
}
}()
if err := trace.Start(f); err != nil {
log.Fatalf("failed to start trace: %v", err)
}
defer trace.Stop()
// your program here
RunMyProgram()
}
func RunMyProgram() {
fmt.Printf("this function will be traced")
}
Index ¶
Examples ¶
Functions ¶
func Start ¶
Start enables tracing for the current program. While tracing, the trace will be buffered and written to w. Start returns an error if tracing is already enabled.
func Stop ¶
func Stop()
Stop stops the current tracing, if any. Stop only returns after all the writes for the trace have completed.
Source Files ¶
- Version
- v1.10.0-rc.2
- Published
- Feb 7, 2018
- Platform
- darwin/amd64
- Imports
- 2 packages
- Last checked
- 1 minute ago –
Tools for package owners.