Package debug

import "runtime/debug"
Overview
Index

Overview ▾

程序包调试包含用于程序在运行时进行自我调试的功能.

func FreeOSMemory 1.1

func FreeOSMemory()

FreeOSMemory强制执行垃圾回收,然后尝试将尽可能多的内存返回给操作系统. (即使未调用,运行时也会在后台任务中逐渐将内存返回给操作系统.)

func PrintStack

func PrintStack()

PrintStack将runtime.Stack返回的堆栈跟踪打印到标准错误.

func ReadGCStats 1.1

func ReadGCStats(stats *GCStats)

ReadGCStats将有关垃圾回收的统计信息读取到统计信息中. 暂停历史记录中的条目数取决于系统. stats.Pause slice如果足够大将被重用,否则重新分配. ReadGCStats可能会使用stats.Pause切片的全部容量. 如果stats.PauseQuantiles是非空的,则ReadGCStats会使用分位数来填充它,以汇总暂停时间的分布. 例如,如果len(stats.PauseQuantiles)为5,则将填充最小,25%,50%,75%和最大暂停时间.

func SetGCPercent 1.1

func SetGCPercent(percent int) int

SetGCPercent设置垃圾收集目标百分比:当新分配的数据与上一个收集之后剩余的活动数据的比率达到此百分比时,触发收集. SetGCPercent返回上一个设置. 初始设置是启动时GOGC环境变量的值,如果未设置,则为100. 负百分比将禁用垃圾收集.

func SetMaxStack 1.2

func SetMaxStack(bytes int) int

SetMaxStack设置单个goroutine堆栈可以使用的最大内存量. 如果在扩展堆栈时有任何goroutine超过了此限制,则程序将崩溃. SetMaxStack返回先前的设置. 初始设置在64位系统上为1 GB,在32位系统上为250 MB.

SetMaxStack主要用于限制进入无限递归的goroutine造成的损坏. 它仅限制将来的堆栈增长.

func SetMaxThreads 1.2

func SetMaxThreads(threads int) int

SetMaxThreads设置Go程序可以使用的最大操作系统线程数. 如果尝试使用的数量超过此数量,则该程序将崩溃. SetMaxThreads返回先前的设置. 初始设置为10,000个线程.

该限制控制操作系统线程的数量,而不是goroutine的数量. Go程序仅在准备运行goroutine但由于使用runtime.LockOSThread而将所有现有线程阻塞在系统调用,cgo调用中或锁定到其他goroutine时才创建新线程.

SetMaxThreads主要用于限制创建无限线程数的程序造成的损坏. 这个想法是在关闭操作系统之前先关闭程序.

func SetPanicOnFault 1.3

func SetPanicOnFault(enabled bool) bool

当程序在意外的(非nil)地址处发生错误时,SetPanicOnFault控制运行时的行为. 此类错误通常是由诸如运行时内存损坏之类的错误引起的,因此默认响应是使程序崩溃. 在不太动态的情况下,使用内存映射文件或不安全地操作内存的程序可能会在非空地址处引起错误; SetPanicOnFault允许此类程序请求运行时仅触发紧急事件,而不触发崩溃. SetPanicOnFault仅适用于当前goroutine. 它返回上一个设置.

func SetTraceback 1.6

func SetTraceback(level string)

SetTraceback设置运行时在由于无法恢复的紧急情况或内部运行时错误而退出之前在其打印的回溯中打印的详细信息量. level参数采用与GOTRACEBACK环境变量相同的值. 例如,SetTraceback(" all")确保程序在崩溃时打印所有goroutine. 有关详细信息,请参见程序包运行时文档. 如果以低于环境变量的级别调用SetTraceback,则该调用将被忽略.

func Stack

func Stack() []byte

堆栈返回调用它的goroutine的格式化堆栈跟踪. 它使用足够大的缓冲区调用runtime.Stack来捕获整个跟踪.

func WriteHeapDump 1.3

func WriteHeapDump(fd uintptr)

WriteHeapDump将堆的描述及其中的对象写入给定的文件描述符.

WriteHeapDump暂停所有goroutine的执行,直到完全写入堆转储为止. 因此,文件描述符不得连接到另一端在同一Go进程中的管道或套接字. 而是使用临时文件或网络套接字.

堆转储格式在https://golang.org/s/go15heapdump上定义.

type BuildInfo 1.12

BuildInfo表示从运行的二进制文件读取的构建信息.

type BuildInfo struct {
    Path string    // The main package path
    Main Module    // The main module information
    Deps []*Module // Module dependencies
}

func ReadBuildInfo 1.12

func ReadBuildInfo() (info *BuildInfo, ok bool)

ReadBuildInfo返回嵌入在正在运行的二进制文件中的构建信息. 该信息仅在模块支持的二进制文件中可用.

type GCStats 1.1

GCStats收集有关最近的垃圾收集的信息.

type GCStats struct {
    LastGC         time.Time       // time of last collection
    NumGC          int64           // number of garbage collections
    PauseTotal     time.Duration   // total pause for all collections
    Pause          []time.Duration // pause history, most recent first
    PauseEnd       []time.Time     // pause end times history, most recent first; added in Go 1.4
    PauseQuantiles []time.Duration
}

type Module 1.12

模块代表一个模块.

type Module struct {
    Path    string  // module path
    Version string  // module version
    Sum     string  // checksum
    Replace *Module // replaced by this module
}

by  ICOPY.SITE