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
Trackback URL
Leave a comment
Comments