import "debug/dwarf"
DWARF 2.0(http://dwarfstd.org/doc/dwarf-2.0.0.pdf)で定義されている実行ファイルからロードされたDWARFデバッグ情報へのアクセスを提供します。
パッケージファイル
buf.go const.go entry.go open.go type.go unit.go
AddrType型
AddrTypeは、マシンアドレス型を表わします。
type AddrType struct {
BasicType
}
ArrayType型
ArrayTypeは、固定長配列型を表わします。
type ArrayType struct {
CommonType
Type Type
StrideBitSize int64 // if > 0, number of bits to hold each element
Count int64 // if == -1, an incomplete array, like char x[].
}
(*ArrayType) Size関数
func (t *ArrayType) Size() int64
(*ArrayType) String関数
func (t *ArrayType) String() string
Attr型
Attrは、DWARFフィールドの属性型を識別します。
type Attr uint32
const (
AttrSibling Attr = 0x01
AttrLocation Attr = 0x02
AttrName Attr = 0x03
AttrOrdering Attr = 0x09
AttrByteSize Attr = 0x0B
AttrBitOffset Attr = 0x0C
AttrBitSize Attr = 0x0D
AttrStmtList Attr = 0x10
AttrLowpc Attr = 0x11
AttrHighpc Attr = 0x12
AttrLanguage Attr = 0x13
AttrDiscr Attr = 0x15
AttrDiscrValue Attr = 0x16
AttrVisibility Attr = 0x17
AttrImport Attr = 0x18
AttrStringLength Attr = 0x19
AttrCommonRef Attr = 0x1A
AttrCompDir Attr = 0x1B
AttrConstValue Attr = 0x1C
AttrContainingType Attr = 0x1D
AttrDefaultValue Attr = 0x1E
AttrInline Attr = 0x20
AttrIsOptional Attr = 0x21
AttrLowerBound Attr = 0x22
AttrProducer Attr = 0x25
AttrPrototyped Attr = 0x27
AttrReturnAddr Attr = 0x2A
AttrStartScope Attr = 0x2C
AttrStrideSize Attr = 0x2E
AttrUpperBound Attr = 0x2F
AttrAbstractOrigin Attr = 0x31
AttrAccessibility Attr = 0x32
AttrAddrClass Attr = 0x33
AttrArtificial Attr = 0x34
AttrBaseTypes Attr = 0x35
AttrCalling Attr = 0x36
AttrCount Attr = 0x37
AttrDataMemberLoc Attr = 0x38
AttrDeclColumn Attr = 0x39
AttrDeclFile Attr = 0x3A
AttrDeclLine Attr = 0x3B
AttrDeclaration Attr = 0x3C
AttrDiscrList Attr = 0x3D
AttrEncoding Attr = 0x3E
AttrExternal Attr = 0x3F
AttrFrameBase Attr = 0x40
AttrFriend Attr = 0x41
AttrIdentifierCase Attr = 0x42
AttrMacroInfo Attr = 0x43
AttrNamelistItem Attr = 0x44
AttrPriority Attr = 0x45
AttrSegment Attr = 0x46
AttrSpecification Attr = 0x47
AttrStaticLink Attr = 0x48
AttrType Attr = 0x49
AttrUseLocation Attr = 0x4A
AttrVarParam Attr = 0x4B
AttrVirtuality Attr = 0x4C
AttrVtableElemLoc Attr = 0x4D
AttrAllocated Attr = 0x4E
AttrAssociated Attr = 0x4F
AttrDataLocation Attr = 0x50
AttrStride Attr = 0x51
AttrEntrypc Attr = 0x52
AttrUseUTF8 Attr = 0x53
AttrExtension Attr = 0x54
AttrRanges Attr = 0x55
AttrTrampoline Attr = 0x56
AttrCallColumn Attr = 0x57
AttrCallFile Attr = 0x58
AttrCallLine Attr = 0x59
AttrDescription Attr = 0x5A
)
(Attr) GoString関数
func (a Attr) GoString() string
(Attr) String関数
func (a Attr) String() string
BasicType型
BasicTypeは、全ての基本型に共通するフィールドを保持します。
type BasicType struct {
CommonType
BitSize int64
BitOffset int64
}
(*BasicType) Basic関数
func (b *BasicType) Basic() *BasicType
(*BasicType) String関数
func (t *BasicType) String() string
BoolType型
BoolTypeは、boolean型を表わします。
type BoolType struct {
BasicType
}
CharType型
CharTypeは、符号付き文字型を表わします。
type CharType struct {
BasicType
}
CommonType型
CommonTypeは、複数の型に共通するフィールドを保持します。フィールドが不明な場合、または指定された型に適用出来ない場合はゼロ値が使われます。
type CommonType struct {
ByteSize int64 // size of value of this type, in bytes
Name string // name that can be used to refer to type
}
(*CommonType) Common関数
func (c *CommonType) Common() *CommonType
(*CommonType) Size関数
func (c *CommonType) Size() int64
ComplexType型
ComplexTypeは、浮動小数点型を表わします。
type ComplexType struct {
BasicType
}
Data型
Dataは、実行ファイル(ELF 、Mach-Oなど)からロードされたDWARFデバッグ情報を表わします。
type Data struct {
// contains unexported fields
}
New関数
func New(abbrev, aranges, frame, info, line, pubnames, ranges, str []byte) (*Data, os.Error)
Newは、指定されたパラメータで初期化した新しいDataオブジェクトを返します。クライアントは通常、直接Newを呼び出すのではなく、未確定関数(今後名前をつけます)を使用してください。
[]byte引数はオブジェクトファイルの対応するデバッグセクションからのデータです。例えば、ELFオブジェクトにおいてabbrevは”.debug_abbrev”セクションの内容となります。
(*Data) Reader関数
func (d *Data) Reader() *Reader
Readerは、Dataの新しいリーダを返します。リーダはDWARF “info”セクションのバイトオフセット0に配置されます。
(*Data) Type関数
func (d *Data) Type(off Offset) (Type, os.Error)
DecodeError型
type DecodeError struct {
Name string
Offset Offset
Error string
}
(DecodeError) String関数
func (e DecodeError) String() string
DotDotDotType型
DotDotDotTypeは、可変関数パラメータ(…)を表わします。
type DotDotDotType struct {
CommonType
}
(*DotDotDotType) String関数
func (t *DotDotDotType) String() string
Entry型
Entryは、属性と値のペアのシーケンスです。
type Entry struct {
Offset Offset // offset of Entry in DWARF info
Tag Tag // tag (kind of Entry)
Children bool // whether Entry is followed by children
Field []Field
}
(*Entry) Val関数
func (e *Entry) Val(a Attr) interface{}
Valは、Entry内の属性Attrに関連する値を返します。属性が存在しない場合はnilを返します。
通常は次のようにして、nilでないか、また望んだ動的な型を持っているか一緒にチェックします。
v, ok := e.Val(AttrSibling).(int64);
EnumType型
EnumTypeは、列挙された型を表します。CommonTypeにおいて直接整数型で指定できるのはByteSizeのみです。
type EnumType struct {
CommonType
EnumName string
Val []*EnumValue
}
(*EnumType) String関数
func (t *EnumType) String() string
EnumValue型
EnumValueは、一つの列挙値を表します。
type EnumValue struct {
Name string
Val int64
}
Field型
Fieldは、Entry内の属性と値のセットです。
type Field struct {
Attr Attr
Val interface{}
}
FloatType型
FloatTypeは、浮動小数点型を表します。
type FloatType struct {
BasicType
}
FuncType型
FuncTypeは、関数型を表します。
type FuncType struct {
CommonType
ReturnType Type
ParamType []Type
}
(*FuncType) String関数
func (t *FuncType) String() string
IntType型
IntTypeは、符号付き整数型を表します。
type IntType struct {
BasicType
}
Offset型
Offsetは、DWARF情報内でのEntryの位置を表します。(Reader.Seekを参照)
type Offset uint32
PtrType型
PtrTypeは、ポインタ型を表します。
type PtrType struct {
CommonType
Type Type
}
(*PtrType) String関数
func (t *PtrType) String() string
QualType型
QualTypeは、C/C++言語の”const”、”restrict”、”volatile”修飾子の型を表します。
type QualType struct {
CommonType
Qual string
Type Type
}
(*QualType) Size関数
func (t *QualType) Size() int64
(*QualType) String関数
func (t *QualType) String() string
Reader型
Readerは、DWARF “info” セクションからEntry構造を読み込むことができます。Entryはツリー構造で配置されてます。ReaderのNext関数は行きがけ順で連続するエントリを返し、エントリが子を持つ場合はChildrenフィールドはtrueであり、またその子へと順に辿っていき、EntryのTagが0になると終了します。
type Reader struct {
// contains unexported fields
}
(*Reader) Next関数
func (r *Reader) Next() (*Entry, os.Error)
Nextは、エンコードされたエントリストリームから次のエントリを読み込みます。セクションの終わりに達した際にnilが返されます。カレントオフセットが無効な場合、またはオフセット位置のデータが有効なEntryとして解読できない場合はエラーを返します。
(*Reader) Seek関数
func (r *Reader) Seek(off Offset)
Seekは、エンコードされたエントリストリーム内のオフセットoffへReaderの位置を移動します。オフセット0は先頭エントリを表すために使用することができます。
(*Reader) SkipChildren関数
func (r *Reader) SkipChildren()
SkipChildrenは、Nextによって返された最後のEntryと関連している子エントリをスキップします。Entryが子を持っていない場合、またはNextが呼び出されていない場合は何もしません。
StructField型
StructFieldは、構造体、共用体、またはC++のクラス型のフィールドを表します。
type StructField struct {
Name string
Type Type
ByteOffset int64
ByteSize int64
BitOffset int64 // within the ByteSize bytes at ByteOffset
BitSize int64 // zero if not a bit field
}
StructType型
StructTypeは、構造体、共用体、またはC++のクラス型を表します。
type StructType struct {
CommonType
StructName string
Kind string // "struct", "union", or "class".
Field []*StructField
Incomplete bool // if true, struct, union, class is declared but not defined
}
(*StructType) Defn関数
func (t *StructType) Defn() string
(*StructType) String関数
func (t *StructType) String() string
Tag型
Tagは、Entryの分類(型)を表します。
type Tag uint32
const (
TagArrayType Tag = 0x01
TagClassType Tag = 0x02
TagEntryPoint Tag = 0x03
TagEnumerationType Tag = 0x04
TagFormalParameter Tag = 0x05
TagImportedDeclaration Tag = 0x08
TagLabel Tag = 0x0A
TagLexDwarfBlock Tag = 0x0B
TagMember Tag = 0x0D
TagPointerType Tag = 0x0F
TagReferenceType Tag = 0x10
TagCompileUnit Tag = 0x11
TagStringType Tag = 0x12
TagStructType Tag = 0x13
TagSubroutineType Tag = 0x15
TagTypedef Tag = 0x16
TagUnionType Tag = 0x17
TagUnspecifiedParameters Tag = 0x18
TagVariant Tag = 0x19
TagCommonDwarfBlock Tag = 0x1A
TagCommonInclusion Tag = 0x1B
TagInheritance Tag = 0x1C
TagInlinedSubroutine Tag = 0x1D
TagModule Tag = 0x1E
TagPtrToMemberType Tag = 0x1F
TagSetType Tag = 0x20
TagSubrangeType Tag = 0x21
TagWithStmt Tag = 0x22
TagAccessDeclaration Tag = 0x23
TagBaseType Tag = 0x24
TagCatchDwarfBlock Tag = 0x25
TagConstType Tag = 0x26
TagConstant Tag = 0x27
TagEnumerator Tag = 0x28
TagFileType Tag = 0x29
TagFriend Tag = 0x2A
TagNamelist Tag = 0x2B
TagNamelistItem Tag = 0x2C
TagPackedType Tag = 0x2D
TagSubprogram Tag = 0x2E
TagTemplateTypeParameter Tag = 0x2F
TagTemplateValueParameter Tag = 0x30
TagThrownType Tag = 0x31
TagTryDwarfBlock Tag = 0x32
TagVariantPart Tag = 0x33
TagVariable Tag = 0x34
TagVolatileType Tag = 0x35
TagDwarfProcedure Tag = 0x36
TagRestrictType Tag = 0x37
TagInterfaceType Tag = 0x38
TagNamespace Tag = 0x39
TagImportedModule Tag = 0x3A
TagUnspecifiedType Tag = 0x3B
TagPartialUnit Tag = 0x3C
TagImportedUnit Tag = 0x3D
TagMutableType Tag = 0x3E
)
(Tag) GoString関数
func (t Tag) GoString() string
(Tag) String関数
func (t Tag) String() string
Type型
Typeは、特定のType構造体(CharType, StructType等)へのポインタを表します。
type Type interface {
Common() *CommonType
String() string
Size() int64
}
TypedefType型
TypedefTypeは、名前付きの型を表します。
type TypedefType struct {
CommonType
Type Type
}
(*TypedefType) Size関数
func (t *TypedefType) Size() int64
(*TypedefType) String関数
func (t *TypedefType) String() string
UcharType型
UcharTypeは、符号無し文字型を表します。
type UcharType struct {
BasicType
}
UintType型
UintTypeは、符号無し整数型を表します。
type UintType struct {
BasicType
}
VoidType型
VoidTypeは、C言語のvoid型を表します。
type VoidType struct {
CommonType
}
(*VoidType) String関数
func (t *VoidType) String() string
Trackback URL
Comments