Source file src/internal/trace/parser.go

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package trace
     6  
     7  // Frame is a frame in stack traces.
     8  type Frame struct {
     9  	PC   uint64
    10  	Fn   string
    11  	File string
    12  	Line int
    13  }
    14  
    15  const (
    16  	// Special P identifiers:
    17  	FakeP    = 1000000 + iota
    18  	TimerP   // depicts timer unblocks
    19  	NetpollP // depicts network unblocks
    20  	SyscallP // depicts returns from syscalls
    21  	GCP      // depicts GC state
    22  	ProfileP // depicts recording of CPU profile samples
    23  )
    24  
    25  // Event types in the trace.
    26  // Verbatim copy from src/runtime/trace.go with the "trace" prefix removed.
    27  const (
    28  	EvNone              = 0  // unused
    29  	EvBatch             = 1  // start of per-P batch of events [pid, timestamp]
    30  	EvFrequency         = 2  // contains tracer timer frequency [frequency (ticks per second)]
    31  	EvStack             = 3  // stack [stack id, number of PCs, array of {PC, func string ID, file string ID, line}]
    32  	EvGomaxprocs        = 4  // current value of GOMAXPROCS [timestamp, GOMAXPROCS, stack id]
    33  	EvProcStart         = 5  // start of P [timestamp, thread id]
    34  	EvProcStop          = 6  // stop of P [timestamp]
    35  	EvGCStart           = 7  // GC start [timestamp, seq, stack id]
    36  	EvGCDone            = 8  // GC done [timestamp]
    37  	EvSTWStart          = 9  // GC mark termination start [timestamp, kind]
    38  	EvSTWDone           = 10 // GC mark termination done [timestamp]
    39  	EvGCSweepStart      = 11 // GC sweep start [timestamp, stack id]
    40  	EvGCSweepDone       = 12 // GC sweep done [timestamp, swept, reclaimed]
    41  	EvGoCreate          = 13 // goroutine creation [timestamp, new goroutine id, new stack id, stack id]
    42  	EvGoStart           = 14 // goroutine starts running [timestamp, goroutine id, seq]
    43  	EvGoEnd             = 15 // goroutine ends [timestamp]
    44  	EvGoStop            = 16 // goroutine stops (like in select{}) [timestamp, stack]
    45  	EvGoSched           = 17 // goroutine calls Gosched [timestamp, stack]
    46  	EvGoPreempt         = 18 // goroutine is preempted [timestamp, stack]
    47  	EvGoSleep           = 19 // goroutine calls Sleep [timestamp, stack]
    48  	EvGoBlock           = 20 // goroutine blocks [timestamp, stack]
    49  	EvGoUnblock         = 21 // goroutine is unblocked [timestamp, goroutine id, seq, stack]
    50  	EvGoBlockSend       = 22 // goroutine blocks on chan send [timestamp, stack]
    51  	EvGoBlockRecv       = 23 // goroutine blocks on chan recv [timestamp, stack]
    52  	EvGoBlockSelect     = 24 // goroutine blocks on select [timestamp, stack]
    53  	EvGoBlockSync       = 25 // goroutine blocks on Mutex/RWMutex [timestamp, stack]
    54  	EvGoBlockCond       = 26 // goroutine blocks on Cond [timestamp, stack]
    55  	EvGoBlockNet        = 27 // goroutine blocks on network [timestamp, stack]
    56  	EvGoSysCall         = 28 // syscall enter [timestamp, stack]
    57  	EvGoSysExit         = 29 // syscall exit [timestamp, goroutine id, seq, real timestamp]
    58  	EvGoSysBlock        = 30 // syscall blocks [timestamp]
    59  	EvGoWaiting         = 31 // denotes that goroutine is blocked when tracing starts [timestamp, goroutine id]
    60  	EvGoInSyscall       = 32 // denotes that goroutine is in syscall when tracing starts [timestamp, goroutine id]
    61  	EvHeapAlloc         = 33 // gcController.heapLive change [timestamp, heap live bytes]
    62  	EvHeapGoal          = 34 // gcController.heapGoal change [timestamp, heap goal bytes]
    63  	EvTimerGoroutine    = 35 // denotes timer goroutine [timer goroutine id]
    64  	EvFutileWakeup      = 36 // denotes that the previous wakeup of this goroutine was futile [timestamp]
    65  	EvString            = 37 // string dictionary entry [ID, length, string]
    66  	EvGoStartLocal      = 38 // goroutine starts running on the same P as the last event [timestamp, goroutine id]
    67  	EvGoUnblockLocal    = 39 // goroutine is unblocked on the same P as the last event [timestamp, goroutine id, stack]
    68  	EvGoSysExitLocal    = 40 // syscall exit on the same P as the last event [timestamp, goroutine id, real timestamp]
    69  	EvGoStartLabel      = 41 // goroutine starts running with label [timestamp, goroutine id, seq, label string id]
    70  	EvGoBlockGC         = 42 // goroutine blocks on GC assist [timestamp, stack]
    71  	EvGCMarkAssistStart = 43 // GC mark assist start [timestamp, stack]
    72  	EvGCMarkAssistDone  = 44 // GC mark assist done [timestamp]
    73  	EvUserTaskCreate    = 45 // trace.NewTask [timestamp, internal task id, internal parent id, name string, stack]
    74  	EvUserTaskEnd       = 46 // end of task [timestamp, internal task id, stack]
    75  	EvUserRegion        = 47 // trace.WithRegion [timestamp, internal task id, mode(0:start, 1:end), name string, stack]
    76  	EvUserLog           = 48 // trace.Log [timestamp, internal id, key string id, stack, value string]
    77  	EvCPUSample         = 49 // CPU profiling sample [timestamp, real timestamp, real P id (-1 when absent), goroutine id, stack]
    78  	EvCount             = 50
    79  )
    80  

View as plain text