Hexagon GDB Debugger介绍(45)

281 篇文章 15 订阅
240 篇文章 11 订阅

Hexagon GDB Debugger介绍(45)

4.5.2.5 Python 中的类型

调试器使用类 gdb.Type 表示来自下级的类型。
gdb 模块中提供了以下类型相关的函数:

lookup_type name [block]
按名称查找类型。 name 是要查找的类型的名称。 它必须是一个字符串。
通常,此函数返回 gdb.Type 的一个实例。 如果找不到指定的类型,则会引发异常。

Type 的实例具有以下属性(都是 Type 的实例变量):
code
此类型的类型代码。 类型代码将是下面定义的 TYPE_CODE_ 常量之一。

sizeof
此类型的大小,以目标char为单位。 char 类型是一个 8 位字节。

tag
此类型的标记名称。 标签名是C和C++中struct、union或enum后面的名字; 并非所有语言都有这个概念。 如果此类型没有标签名称,则返回 None 。

Type 的实例具有以下方法:
fields
对于 struct 和 union 类型,此方法返回字段。 范围类型有两个字段:最小值和最大值。 枚举类型每个枚举常量有一个字段。 函数和方法类型的每个参数都有一个字段。 C++ 类的基本类型也表示为字段。 如果类型没有字段,或不属于这些类别之一,则返回空序列。

每个字段都是一个具有以下预定义属性的对象:
bitpos
此属性不适用于static字段(如在 C++ 中)。 对于non-static字段,该值是字段的位位置。
name
字段的名称,或者匿名字段的 None。
artificial
如果该字段是artificial的,则为 True,通常意味着它是由编译器而不是用户提供的。 此属性始终提供,如果字段不是artificial的,则为 False。
bitsize
如果该字段被打包,或者是一个位字段,那么这将有一个非零值,它是字段的大小(以位为单位)。 否则,这将为零; 在这种情况下,字段的大小由其类型给出。
type
字段的类型。 这通常是 Type 的一个实例,但在某些情况下它可以是 None。

const
返回一个新的 gdb.Type 对象,它表示该类型的常量限定变体。

volatile
返回一个新的 gdb.Type 对象,它表示这种类型的 volatile 限定的变体。

unqualified
返回一个新的 gdb.Type 对象,该对象表示此类型的非限定变体。 也就是说,结果既不是 const 也不是 volatile。

reference
返回一个新的 gdb.Type 对象,它表示对此类型的引用。

strip_typedefs
删除所有类型定义层后,返回一个新的 gdb.Type 对象,该对象表示真实类型。

target
返回一个新的 gdb.Type 对象,表示该类型的目标类型。

对于指针类型,目标类型是指向对象的类型。 对于数组类型,目标类型是数组元素的类型。 对于函数或方法类型,目标类型是返回值的类型。 对于复杂类型,目标类型是元素的类型。 对于 typedef,目标类型是别名类型。

如果该类型没有目标,则此方法将引发异常。

template_argument n
如果这个 gdb.Type 是一个模板的实例,这将返回一个新的 gdb.Type,它代表第 n 个模板参数的类型。
如果此 gdb.Type 不是模板类型,则会引发异常。
通常,只有 C++ 代码具有模板类型。

每种类型都有一个代码,表示该类型属于哪个类别。 可用的类型类别由 gdb 模块中定义的常量表示:

type含义
TYPE_CODE_PTR类型是一个指针
TYPE_CODE_ARRAY类型是一个数组
TYPE_CODE_STRUCT结构体
TYPE_CODE_UNION类型是联合体
TYPE_CODE_ENUM类型是枚举
TYPE_CODE_FLAGS位标志类型,用于状态寄存器等
TYPE_CODE_FUNC类型是一个函数
TYPE_CODE_INT类型是整数类型
TYPE_CODE_FLT浮点类型
TYPE_CODE_VOID特殊类型void
TYPE_CODE_SET帕斯卡(Pascal )集类型
TYPE_CODE_RANGE范围类型,即有边界的整数类型
TYPE_CODE_STRING字符串类型,不适用于 C
TYPE_CODE_BITSTRING位串
TYPE_CODE_ERROR未知或错误的类型
TYPE_CODE_METHOD在 C++ 中找到的方法类型
TYPE_CODE_METHODPTR指向成员函数的指针
TYPE_CODE_MEMBERPTR指向成员的指针
TYPE_CODE_REF引用类型
TYPE_CODE_CHAR字符类型
TYPE_CODE_BOOL布尔类型
TYPE_CODE_COMPLEX复杂的浮点类型
TYPE_CODE_TYPEDEF其他类型的 typedef
TYPE_CODE_NAMESPACEC++ 命名空间
TYPE_CODE_DECFLOAT十进制浮点类型
TYPE_CODE_INTERNAL_FUNCTION调试器内部的函数,这是用于表示便利功能的类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值