Documentation ¶
Index ¶
- Constants
- Variables
- type DebugLineInfo
- func (lineInfo *DebugLineInfo) AllPCsBetween(begin, end uint64, excludeFile string, excludeLine int) ([]uint64, error)
- func (lineInfo *DebugLineInfo) AllPCsForFileLine(f string, l int) (pcs []uint64)
- func (lineInfo *DebugLineInfo) LineToPC(filename string, lineno int) uint64
- func (lineInfo *DebugLineInfo) PCToLine(basePC, pc uint64) (string, int)
- func (lineInfo *DebugLineInfo) PrologueEndPC(start, end uint64) (pc uint64, file string, line int, ok bool)
- type DebugLinePrologue
- type DebugLines
- type FileEntry
- type Location
- type StateMachine
Constants ¶
const ( DW_LNS_copy = 1 DW_LNS_advance_pc = 2 DW_LNS_advance_line = 3 DW_LNS_set_file = 4 DW_LNS_set_column = 5 DW_LNS_negate_stmt = 6 DW_LNS_set_basic_block = 7 DW_LNS_const_add_pc = 8 DW_LNS_fixed_advance_pc = 9 DW_LNS_prologue_end = 10 DW_LNS_epilogue_begin = 11 )
Special opcodes
const ( DW_LINE_end_sequence = 1 DW_LINE_set_address = 2 DW_LINE_define_file = 3 )
Extended opcodes
Variables ¶
var NoSourceError = errors.New("no source available")
Functions ¶
This section is empty.
Types ¶
type DebugLineInfo ¶
type DebugLineInfo struct { Prologue *DebugLinePrologue IncludeDirs []string FileNames []*FileEntry Instructions []byte Lookup map[string]*FileEntry Logf func(string, ...interface{}) // contains filtered or unexported fields }
func Parse ¶
func Parse(compdir string, buf *bytes.Buffer, logfn func(string, ...interface{})) *DebugLineInfo
Parse parses a single debug_line segment from buf. Compdir is the DW_AT_comp_dir attribute of the associated compile unit.
func (*DebugLineInfo) AllPCsBetween ¶ added in v1.0.0
func (lineInfo *DebugLineInfo) AllPCsBetween(begin, end uint64, excludeFile string, excludeLine int) ([]uint64, error)
AllPCsBetween returns all PC addresses between begin and end (including both begin and end) that have the is_stmt flag set and do not belong to excludeFile:excludeLine
func (*DebugLineInfo) AllPCsForFileLine ¶ added in v1.0.0
func (lineInfo *DebugLineInfo) AllPCsForFileLine(f string, l int) (pcs []uint64)
Returns all PCs for a given file/line. Useful for loops where the 'for' line could be split amongst 2 PCs.
func (*DebugLineInfo) LineToPC ¶ added in v1.0.0
func (lineInfo *DebugLineInfo) LineToPC(filename string, lineno int) uint64
LineToPC returns the first PC address associated with filename:lineno.
func (*DebugLineInfo) PCToLine ¶ added in v1.0.0
func (lineInfo *DebugLineInfo) PCToLine(basePC, pc uint64) (string, int)
PCToLine returns the filename and line number associated with pc. If pc isn't found inside lineInfo's table it will return the filename and line number associated with the closest PC address preceding pc. basePC will be used for caching, it's normally the entry point for the function containing pc.
func (*DebugLineInfo) PrologueEndPC ¶ added in v1.1.0
func (lineInfo *DebugLineInfo) PrologueEndPC(start, end uint64) (pc uint64, file string, line int, ok bool)
PrologueEndPC returns the first PC address marked as prologue_end in the half open interval [start, end)
type DebugLinePrologue ¶
type DebugLines ¶
type DebugLines []*DebugLineInfo
func ParseAll ¶ added in v1.0.0
func ParseAll(data []byte, logfn func(string, ...interface{})) DebugLines
ParseAll parses all debug_line segments found in data
type StateMachine ¶
type StateMachine struct {
// contains filtered or unexported fields
}