Hexagon GDB Debugger介绍(48)

240 篇文章 11 订阅

4.5.2.10 Python中的Objfiles

调试器从各种含符号的文件中为一个劣质文件加载符号(第2.18.1节)。这些文件包括主要的可执行文件,任何由下级使用的共享库,以及任何单独的调试信息文件(2.18.2节)。调试器将这些含有符号的文件称为objfiles。
以下与objfile相关的函数在gdb模块中可用:

current_objfile
当自动加载一个Python脚本时(第4.5.2.3节),调试器将 "当前objfile "设置为相应的objfile。这个函数返回当前的objfile。如果没有当前objfile,该函数返回None。
objfiles
返回调试器当前已知的所有objfiles的序列。参见4.5.2.10节。
每个objfile由gdb.Objfile类的一个实例表示。

调试器提供以下属性(这些属性都是Objfile的实例变量):
filename
objfile的文件名,是一个字符串。
pretty_printers
pretty_printers属性是一个函数列表。它用于查找pretty- printers。
一个值被依次传递给每个函数;如果函数返回无,那么搜索继续进行。否则,返回值应该是一个用于格式化该值的对象。更多信息见第4.5.2.6节。

4.5.2.11 Accessing inferior stack frames from Python

当被调试的程序停止时,调试器能够分析其调用堆栈(2.10.1节)。gdb.Frame类代表堆栈中的一个帧。一个gdb.Frame对象只有在其对应的帧存在于下级的堆栈中时才有效。如果你试图使用一个无效的框架对象,调试器会抛出一个RuntimeError异常。
两个gdb.Frame对象可以用==运算符来比较是否相等。比如说:

(gdb) python print gdb.newest_frame() == gdb.selected_frame()
True

在gdb模块中,有以下与框架有关的功能:
selected_frame
返回选定的框架对象。(2.10.3节)。
frame_stop_reason_string reason [Function]
返回一个字符串,解释gdb停止解开帧的原因,用给定的原因代码(一个整数,见下面定义的unwind_stop_reason方法)表示。

一个gdb.Frame对象有以下方法:
is_valid
如果gdb.Frame对象是有效的,则返回true,如果不是,则返回false。如果一个框架对象所指向的框架在下级中不存在了,它就会变成无效的。所有的gdb.Frame方法,如果在调用该方法时它是无效的,都会抛出一个异常。
name
返回框架的函数名称,如果无法获得,则返回None。

type
返回框架的类型。返回的类型是以下值之一:
gdb.NORMAL_FRAME
gdb.DUMMY_FRAME
gdb.SIGTRAMP_FRAME
gdb.SENTINEL_FRAME
unwind_stop_reason
返回一个整数,代表不可能向最外层的框架寻找更多的框架的原因。使用gdb.frame_stop_reason_ string将此函数返回的值转换为字符串。
pc
返回该帧的恢复地址。
older
返回调用此帧的帧。
newer
返回这个框架所调用的框架。
read_var variable
返回这个框架中指定变量的值。变量必须是一个字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值