Oracle® Solaris 11.2 链接程序和库指南

退出打印视图

更新时间: 2014 年 7 月
 
 

调试器访问及辅助目标文件使用

调试器和其他观察工具必须合并在主目标文件和辅助目标文件中找到的信息,以便生成目标文件的完整视图。这等同于处理单个文件中的信息。包含相同节头的主目标文件和辅助目标文件以及单个符号表可简化该合并。

调试器可以使用以下步骤组合这些文件中包含的信息。

  1. 从主目标文件或任何辅助目标文件开始,查找 .SUNW_ancillary 节。存在此节指示该目标文件是辅助组的一部分,其中包含的信息可用于获取完整文件列表以及确定这些文件中的哪一个是当前检查的文件。

  2. 使用要检查的目标文件中的节头数组作为初始模板,在内存中创建一个节头数组。

  3. 依次打开并读取 .SUNW_ancillary 节标识的每个文件。对于每个文件,使用不包含 SHF_SUNW_ABSENT 标志集的每个节的信息填充内存中的节头数组。

结果是节头的一个完整内存中副本,其中包含指向所有节的数据的指针。在获得该信息后,调试器会像在使用单个文件时一样继续访问和控制正在运行的程序。


注 -  辅助目标文件的 ELF 定义提供了单个主目标文件和任意数量的辅助目标文件。当前,Oracle Solaris 链接编辑器仅生成单个包含所有不可分配节的辅助目标文件。这种情况以后可能会改变。应该编写调试器和其他观察工具来处理多个辅助目标文件的一般情况。