Documentation ¶
Index ¶
- Constants
- Variables
- type DebugLineInfo
- func (lineInfo *DebugLineInfo) AllPCsBetween(begin, end uint64, excludeFile string, excludeLine int) ([]uint64, error)
- func (lineInfo *DebugLineInfo) AllPCsForFileLines(f string, m map[int][]uint64)
- func (lineInfo *DebugLineInfo) FirstFile() string
- func (lineInfo *DebugLineInfo) FirstStmtForLine(start, end uint64) (pc uint64, file string, line int, ok bool)
- func (lineInfo *DebugLineInfo) LineToPC(filename string, lineno int) uint64
- func (lineInfo *DebugLineInfo) LineToPCIn(filename string, lineno int, basePC, startPC, endPC uint64) 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 DW_LNS_set_isa = 12 )
Special opcodes
const ( DW_LINE_end_sequence = 1 DW_LINE_set_address = 2 DW_LINE_define_file = 3 DW_LINE_set_discriminator = 4 )
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{}), staticBase uint64, normalizeBackslash bool, ptrSize int) *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 ¶
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) AllPCsForFileLines ¶
func (lineInfo *DebugLineInfo) AllPCsForFileLines(f string, m map[int][]uint64)
AllPCsForFileLines Adds all PCs for a given file and set (domain of map) of lines to the map value corresponding to each line.
func (*DebugLineInfo) FirstFile ¶
func (lineInfo *DebugLineInfo) FirstFile() string
func (*DebugLineInfo) FirstStmtForLine ¶
func (lineInfo *DebugLineInfo) FirstStmtForLine(start, end uint64) (pc uint64, file string, line int, ok bool)
FirstStmtForLine looks in the half open interval [start, end) for the first PC address marked as stmt for the line at address 'start'.
func (*DebugLineInfo) LineToPC ¶
func (lineInfo *DebugLineInfo) LineToPC(filename string, lineno int) uint64
LineToPC returns the first PC address associated with filename:lineno.
func (*DebugLineInfo) LineToPCIn ¶
func (lineInfo *DebugLineInfo) LineToPCIn(filename string, lineno int, basePC, startPC, endPC uint64) uint64
LineToPCIn returns the first PC for filename:lineno in the interval [startPC, endPC). This function is used to find the instruction corresponding to filename:lineno for a function that has been inlined. basePC will be used for caching, it's normally the entry point for the function containing pc.
func (*DebugLineInfo) PCToLine ¶
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 ¶
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
type StateMachine ¶
type StateMachine struct {
// contains filtered or unexported fields
}