debug

package
v1.12.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 1, 2024 License: GPL-3.0 Imports: 25 Imported by: 63

Documentation

Overview

Package debug provides interfaces for Go runtime debugging facilities.

Overview of debug package

This package is mostly glue code making these facilities available through the CLI and RPC subsystem. If you want to use them from Go code, use package runtime instead.

Source Files

  • api.go : defines the global debugging handler implementing debugging APIs.
  • flags.go : defines command-line flags enabling debugging APIs.
  • loudpanic.go : (deprecated) panics in a way that gets all goroutine stacks printed on stderr.
  • loudpanic_fallback.go : (deprecated) implements fallback of LoudPanic.
  • trace.go : implements start/stop functions of go trace.
  • trace_fallback.go : implements fallback of StartGoTrace and StopGoTrace for Go < 1.5.

Index

Constants

This section is empty.

Variables

View Source
var Flags = []cli.Flag{
	altsrc.NewIntFlag(verbosityFlag),
	altsrc.NewStringFlag(vmoduleFlag),
	altsrc.NewStringFlag(backtraceAtFlag),
	altsrc.NewBoolFlag(debugFlag),
	altsrc.NewStringFlag(logFormatFlag),
	altsrc.NewStringFlag(logFileFlag),
	altsrc.NewBoolFlag(logRotateFlag),
	altsrc.NewIntFlag(logMaxSizeMBsFlag),
	altsrc.NewIntFlag(logMaxBackupsFlag),
	altsrc.NewIntFlag(logMaxAgeFlag),
	altsrc.NewBoolFlag(logCompressFlag),
	altsrc.NewBoolFlag(pprofFlag),
	altsrc.NewStringFlag(pprofAddrFlag),
	altsrc.NewIntFlag(pprofPortFlag),
	altsrc.NewStringFlag(memprofileFlag),
	altsrc.NewIntFlag(memprofilerateFlag),
	altsrc.NewIntFlag(blockprofilerateFlag),
	altsrc.NewStringFlag(cpuprofileFlag),
	altsrc.NewStringFlag(traceFlag),
}

Flags holds all command-line flags required for debugging.

View Source
var (
	Handler = new(HandlerT)
)

Handler is the global debugging handler.

Functions

func CreateLogDir

func CreateLogDir(logDir string)

CreateLogDir creates a directory whose path is logdir as well as empty log files.

func Exit

func Exit()

Exit stops all running profiles, flushing their output to the respective file.

func GetGlogger

func GetGlogger() (*log.GlogHandler, error)

func LoudPanic

func LoudPanic(x interface{})

LoudPanic panics in a way that gets all goroutine stacks printed on stderr.

func Setup

func Setup(ctx *cli.Context) error

Setup initializes profiling and logging based on the CLI flags. It should be called as early as possible in the program.

Types

type HandlerT

type HandlerT struct {
	// contains filtered or unexported fields
}

HandlerT implements the debugging API. Do not create values of this type, use the one in the Handler variable instead.

func (*HandlerT) BacktraceAt

func (*HandlerT) BacktraceAt(location string) error

BacktraceAt sets the log backtrace location. See package log for details on the pattern syntax.

func (*HandlerT) BlockProfile

func (*HandlerT) BlockProfile(file string, nsec uint) error

BlockProfile turns on goroutine profiling for nsec seconds and writes profile data to file. It uses a profile rate of 1 for most accurate information. If a different rate is desired, set the rate and write the profile manually.

func (*HandlerT) CpuProfile

func (h *HandlerT) CpuProfile(file string, nsec uint) error

CpuProfile turns on CPU profiling for nsec seconds and writes profile data to file.

func (*HandlerT) FreeOSMemory

func (*HandlerT) FreeOSMemory()

FreeOSMemory returns unused memory to the OS.

func (*HandlerT) GcStats

func (*HandlerT) GcStats() *debug.GCStats

GcStats returns GC statistics.

func (*HandlerT) GoTrace

func (h *HandlerT) GoTrace(file string, nsec uint) error

GoTrace turns on tracing for nsec seconds and writes trace data to file.

func (*HandlerT) IsPProfRunning

func (h *HandlerT) IsPProfRunning() bool

IsPProfRunning returns true if the pprof HTTP server is running and false otherwise.

func (*HandlerT) MemStats

func (*HandlerT) MemStats() *runtime.MemStats

MemStats returns detailed runtime memory statistics.

func (*HandlerT) MutexProfile

func (*HandlerT) MutexProfile(file string, nsec uint) error

MutexProfile turns on mutex profiling for nsec seconds and writes profile data to file. It uses a profile rate of 1 for most accurate information. If a different rate is desired, set the rate and write the profile manually.

func (*HandlerT) SetBlockProfileRate

func (*HandlerT) SetBlockProfileRate(rate int)

SetBlockProfileRate sets the rate of goroutine block profile data collection. rate 0 disables block profiling.

func (*HandlerT) SetGCPercent

func (*HandlerT) SetGCPercent(v int) int

SetGCPercent sets the garbage collection target percentage. It returns the previous setting. A negative value disables GC.

func (*HandlerT) SetMutexProfileFraction

func (*HandlerT) SetMutexProfileFraction(rate int)

SetMutexProfileFraction sets the rate of mutex profiling.

func (*HandlerT) SetVMLogTarget

func (h *HandlerT) SetVMLogTarget(target int) (string, error)

SetVMLogTarget sets the output target of vmlog.

func (*HandlerT) Stacks

func (*HandlerT) Stacks() string

Stacks returns a printed representation of the stacks of all goroutines.

func (*HandlerT) StartCPUProfile

func (h *HandlerT) StartCPUProfile(file string) error

StartCPUProfile turns on CPU profiling, writing to the given file.

func (*HandlerT) StartGoTrace

func (h *HandlerT) StartGoTrace(file string) error

StartGoTrace turns on tracing, writing to the given file.

func (*HandlerT) StartPProf

func (h *HandlerT) StartPProf(ptrAddr *string, ptrPort *int) error

StartPProf starts the pprof server.

func (*HandlerT) StopCPUProfile

func (h *HandlerT) StopCPUProfile() error

StopCPUProfile stops an ongoing CPU profile.

func (*HandlerT) StopGoTrace

func (h *HandlerT) StopGoTrace() error

StopTrace stops an ongoing trace.

func (*HandlerT) StopPProf

func (h *HandlerT) StopPProf() error

StopPProf stops the pprof server.

func (*HandlerT) Verbosity

func (*HandlerT) Verbosity(level int) error

Verbosity sets the log verbosity ceiling. The verbosity of individual packages and source files can be raised using Vmodule.

func (*HandlerT) VerbosityByID

func (*HandlerT) VerbosityByID(mi int, level int) error

VerbosityByID sets the verbosity of log module with given ModuleID. Please note that VerbosityByID only works with zapLogger.

func (*HandlerT) VerbosityByName

func (*HandlerT) VerbosityByName(mn string, level int) error

VerbosityByName sets the verbosity of log module with given name. Please note that VerbosityByName only works with zapLogger.

func (*HandlerT) Vmodule

func (*HandlerT) Vmodule(pattern string) error

Vmodule sets the log verbosity pattern. See package log for details on the pattern syntax.

func (*HandlerT) WriteBlockProfile

func (*HandlerT) WriteBlockProfile(file string) error

WriteBlockProfile writes a goroutine blocking profile to the given file.

func (*HandlerT) WriteMemProfile

func (*HandlerT) WriteMemProfile(file string) error

WriteMemProfile writes an allocation profile to the given file. Note that the profiling rate cannot be set through the API, it must be set on the command line.

func (*HandlerT) WriteMutexProfile

func (*HandlerT) WriteMutexProfile(file string) error

WriteMutexProfile writes a goroutine blocking profile to the given file.

func (*HandlerT) WriteVMLog

func (h *HandlerT) WriteVMLog(msg string)

WriteVMLog writes msg to a vmlog output file.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL