Hexagon GDB Debugger介绍(37)

240 篇文章 11 订阅

Hexagon GDB Debugger介绍(37)


info files
info target

信息文件和信息目标是同义词; 两者都打印当前目标(参见第 3.2 节),包括调试器当前使用的可执行文件的名称,以及从中加载符号的文件。 命令 help target 列出了所有可能的目标,而不是当前的目标。

maint info sections
另一个可以提供有关程序段的额外信息的命令是 maint info Sections。 除了 info files 显示的节信息外,该命令还显示可执行文件中每个节的标志和文件偏移量。 此外,maint info 部分提供了以下命令选项(可以任意组合):

ALLOBJ 显示所有加载的目标文件的部分。
sections 仅显示命名部分的信息。
section-flags 仅显示部分标志为真的部分的信息。 调试器当前支持以下部分标志:

ALLOC 加载时,节将在进程中分配空间。 为除包含调试信息的部分之外的所有部分设置。
LOAD 节将从文件加载到子进程内存中。 为预初始化的代码和数据设置,为 .bss 部分清除。
RELOC 部分需要在加载前重新定位。
READONLY 子进程不能修改部分。
CODE 节仅包含可执行代码。
DATA 部分仅包含数据(无可执行代码)。
ROM部分将驻留在 ROM 中。
CONSTRUCTOR部分包含构造函数/析构函数列表的数据。
HAS_CONTENTS部分不为空。
NEVER_LOAD链接器不输出节的指令。
IS_COMMON节包含常用符号。

set trust-readonly-sections on
告诉调试器目标文件中的只读部分确实是只读的(即它们的内容不会改变)。 在这种情况下,调试器可以从目标文件中的这些部分中获取值,而不是从目标程序中获取值。 对于某些目标(尤其是嵌入式目标),这可以显着提高调试性能。
默认为关闭。

set trust-readonly-sections off
告诉调试器不要信任只读部分。 这意味着该部分的内容可能会在程序运行时更改,因此必须在需要时从目标中获取。

所有文件指定命令都允许绝对和相对文件名作为参数。 调试器总是将文件名转换为绝对文件名并以这种方式记住它。

调试器支持共享库。

当您使用 run 命令时,调试器会自动从共享库加载符号定义。 (但是,在您发出 run 命令之前,调试器无法理解对共享库中函数的引用)。

在 HP-UX 上,如果程序显式加载库,调试器会在调用 shl_load 时自动加载符号。

但是,有时您可能不想从共享库中自动加载符号定义,例如当它们特别大或数量很多时。

要控制共享库符号的自动加载,请使用以下命令:

set auto-solib-add mode
如果 mode 为 on ,则当下级开始执行时,将自动加载来自所有共享对象库的符号,您附加到独立启动的下级,或者当动态链接器通知调试器已加载新库时。 如果 mode 为 off ,则必须使用 sharedlibrary 命令手动加载符号。 默认值为 on 。

show auto-solib-add
显示当前的自动加载模式。

要显式加载共享库符号,请使用 sharedlibrary 命令:

info share
info sharedlibrary

打印当前加载的共享库的名称。

sharedlibrary regex
share regex
为与 UNIX 正则表达式匹配的文件加载共享对象库符号。 与自动加载的文件一样,它只在键入 run 后加载程序所需的共享库。 如果省略正则表达式,则加载程序所需的所有共享库。

在某些系统(例如 HP-UX 系统)上,调试器支持自动加载共享库符号,直到达到限制阈值大小。 这提供了允许自动加载在默认情况下保持开启的好处,但避免自动加载过大的共享库,达到最初设置的阈值,但您可以根据需要进行修改。

超过该阈值,必须显式加载来自共享库的符号。 要加载这些符号,请使用命令 sharedlibrary filename。 共享库的基地址由调试器自动确定,无需指定。

要显示或设置阈值,请使用以下命令:

set auto-solib-limit threshold
设置自动加载大小阈值,以兆字节为单位。 如果阈值不为零并且共享库自动加载已启用,则将加载来自所有共享对象库的符号,直到加载的共享库符号的总大小超过此阈值。 否则,必须使用 sharedlibrary 命令手动加载符号。 默认阈值为 100(即 100 Mb)。

show auto-solib-limit
显示当前自动加载大小阈值,以兆字节为单位。

许多交叉或远程调试配置也支持共享库。 目标库的副本需要存在于主机系统上; 它们需要与目标库相同,尽管只要主机上的副本不是,目标上的副本就可以被剥离。

您需要告诉调试器目标库在哪里,以便它可以加载正确的副本; 否则,它可能会尝试加载主机的库。 调试器有两个变量来指定目标库的搜索目录。

set solib-absolute-prefix path
如果设置了此变量,路径将用作任何绝对共享库路径的前缀; 许多系统加载器将共享库的绝对路径存储在目标程序的内存中。 如果您使用 solib-absolute-prefix 来查找共享库,则它们需要以与目标相同的方式进行布局,例如 路径下的 /usr/lib 层次结构。

您可以使用 configure-time --with-sysroot 选项设置 solib-absolute-prefix 的默认值。

show solib-absolute-prefix
显示当前共享库前缀。

set solib-search-path path
如果设置了此变量,则路径是以冒号分隔的目录列表,用于搜索共享库。 solib-search-path 用于在 solib-absolute-prefix 无法定位库之后,或者库的路径是相对的而不是绝对的。 如果您想使用 solib-search-path 而不是 solib-absolute-prefix ,请确保将 solib-absolute-prefix 设置为不存在的目录,以防止调试器找到您主机的库。

show solib-search-path
显示当前共享库搜索路径。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值