const defaultAddr2line … const sentinel … type addr2Liner … type lineReaderWriter … type addr2LinerJob … func (a *addr2LinerJob) write(s string) error { … } func (a *addr2LinerJob) readLine() (string, error) { … } // close releases any resources used by the addr2liner object. func (a *addr2LinerJob) close() { … } // newAddr2Liner starts the given addr2liner command reporting // information about the given executable file. If file is a shared // library, base should be the address at which it was mapped in the // program under consideration. func newAddr2Liner(cmd, file string, base uint64) (*addr2Liner, error) { … } // readFrame parses the addr2line output for a single address. It // returns a populated plugin.Frame and whether it has reached the end of the // data. func (d *addr2Liner) readFrame() (plugin.Frame, bool) { … } func (d *addr2Liner) rawAddrInfo(addr uint64) ([]plugin.Frame, error) { … } // addrInfo returns the stack frame information for a specific program // address. It returns nil if the address could not be identified. func (d *addr2Liner) addrInfo(addr uint64) ([]plugin.Frame, error) { … }