import "debug/gosym"

gcコンパイラによって生成されたGoバイナリに組み込まれているGoシンボルや行番号テーブルへのアクセスを実装しています。

パッケージファイル

pclntab.go symtab.go

DecodingError型

DecodingErrorはシンボルテーブルをデコードする際のエラーを表します。

type DecodingError struct {
    // contains unexported fields
}

(*DecodingError) String関数

func (e *DecodingError) String() string

Func型

Funcは単一関数についての情報を収集します。

type Func struct {
    Entry uint64
    *Sym
    End       uint64
    Params    []*Sym
    Locals    []*Sym
    FrameSize int
    LineTable *LineTable
    Obj       *Obj
}

LineTable型

type LineTable struct {
    Data []byte
    PC   uint64
    Line int
}

NewLineTable関数

func NewLineTable(data []byte, text uint64) *LineTable

NewLineTableはエンコードされたデータに一致するPC/lineテーブルを返します。Textは対応するテキストセグメントの開始アドレスを指定する必要があります。

(*LineTable) LineToPC関数

func (t *LineTable) LineToPC(line int, maxpc uint64) uint64

(*LineTable) PCToLine関数

func (t *LineTable) PCToLine(pc uint64) int

Obj型

Objは単一オブジェクトファイルを表します。

type Obj struct {
    Funcs []Func
    Paths []Sym
}

Sym型

Symは単一シンボルテーブルエントリを表します。

type Sym struct {
    Value  uint64
    Type   byte
    Name   string
    GoType uint64 // 関数シンボルの場合はFuncに一致します
    Func   *Func
}

(*Sym) BaseName関数

func (s *Sym) BaseName() string

BaseNameはパッケージ、またはレシーバー名無しでシンボル名を返します。

(*Sym) PackageName関数

func (s *Sym) PackageName() string

PackageNameはシンボル名のパッケージの一部を返します。存在しない場合は空文字列を返します。

(*Sym) ReceiverName関数

func (s *Sym) ReceiverName() string

ReceiverNameはシンボルのレシーバータイプ名を返します。存在しない場合は空文字列を返します。

(*Sym) Static関数

func (s *Sym) Static() bool

Staticはシンボルが静的かどうかを返します。

Table型

TableはGoのシンボルテーブルを表します。プログラムからデコードされた全てのシンボルを保持し、シンボル、名前とアドレスの間で解釈するメソッドを提供します。

type Table struct {
    Syms  []Sym
    Funcs []Func
    Files map[string]*Obj
    Objs  []Obj // textEnd uint64;
}

NewTable関数

func NewTable(symtab []byte, pcln *LineTable) (*Table, os.Error)

NewTableはデータからGoのシンボルテーブルをデコードし、記憶装置表現で返します。

(*Table) LineToPC関数

func (t *Table) LineToPC(file string, line int) (pc uint64, fn *Func, err os.Error)

LineToPCは指定されたファイル、および行の先頭プログラムカウンタを検索します。行検索時にエラーが発生した場合、UnknownPathError、またはUnknownLineErrorを返します。

(*Table) LookupFunc関数

func (t *Table) LookupFunc(name string) *Func

LookupFuncは指定された名前のテキスト、データ、またはbssシンボルを返します。シンボルが存在しない場合はnilを返します。

(*Table) LookupSym関数

func (t *Table) LookupSym(name string) *Sym

LookupSymは指定された名前のテキスト、データ、またはbssシンボルを返します。シンボルが存在しない場合はnilを返します。

(*Table) PCToFunc関数

func (t *Table) PCToFunc(pc uint64) *Func

PCToFuncはプログラムカウンタpcを含んでいる関数を返します。関数が存在しない場合はnilを返します。

(*Table) PCToLine関数

func (t *Table) PCToLine(pc uint64) (file string, line int, fn *Func)

PCToLineはプログラムカウンタの行番号情報を検索します。情報が存在しない場合はnilを返します。(fn == nil)

(*Table) SymByAddr関数

func (t *Table) SymByAddr(addr uint64) *Sym

SymByAddrは指定されたアドレスから開始しているテキスト、データ、またはbssシンボルを返します。

UnknownFileError型

UnknownFileErrorはシンボルテーブルの特定のファイル検索に失敗したことを表します。

type UnknownFileError string

(UnknownFileError) String関数

func (e UnknownFileError) String() string

UnknownLineError型

UnknownLineErrorは行をプログラムカウンタにマップする際に失敗したことを表します。行がファイルの境界を越えている場合、または指定された行にコードが存在しない場合に発生します。

type UnknownLineError struct {
    File string
    Line int
}

(*UnknownLineError) String関数

func (e *UnknownLineError) String() string