overlay符号表建立和查找的方法、装置及程序调制系统制造方法及图纸

技术编号:8452922 阅读:263 留言:0更新日期:2013-03-21 14:37
本发明专利技术实施例公开了overlay符号表建立和查找的方法、装置及程序调制系统,其中overlay符号表建立方法包括:建立VMA和LMA的地址关系表时包括核标识;在判断映射是否正确时包括判断代码段对应的全局代码段所属的image所对应的核信息与地址关系表中的核标识是否匹配;建立blockvector的块链表,块链表中包括有blockvector的核标识。由于本申请中在程序调试时,可以根据核标识查找对应的块信息和对应的symtable_and_line信息,从而建立blockvector列表后,获取block时会显示正确的符号;避免了多核环境下在采用overlay方式进行程序调试时出现的调试错误。

【技术实现步骤摘要】

本专利技术涉及程序开发领域,更具体地说,涉及overlay符号表建立和查找的方法、 装置及程序调制系统。
技术介绍
⑶B (GNU Debugger,开源组织调试器)是开源组织发布的一个强大的UNIX下的程序调试工具。调试人员可以自定义程序或指令的运行方式;可以让被调试的程序或指令停止在设定的断点处,以使调试人员检测程序或指令的运行过程。⑶B包括用户交互界面、符号表处理模块和控制模块;其运行过程为,调试人员通过交互界面输入命令,命令和符号通过解析后,经由控制模块处理后转换为RSP协议命令到目标端;目标端解析RSP协议命令后,执行相应的命令,生成结果;符号表处理模块解析所述结果并将解析后的结果输出到交互界面。在对命令进行编译的过程中,在内存中镜像处理器的一级缓存的地址中的代码段时,往往都是在内存中按照地址顺序来分配空间;现有技术中,可以采用overlay调试技术以缓解一级缓存空间不足,该调试技术的技术方案具体包括在建立overlay符号表时,首先在overlay的代码段建立〈VMA,LMA>的地址关系表,从而可以实现访问VMA对应的已经映射的代码段,其中,LMA为加载内存地址,S卩,Load Memory Addr ;VMA 为虚拟内存地址,即 Virtual Memory Addr。在映射完成后,建立矢量块,并将矢量块的起始地址按照由高到低的地址顺序建立块链表;建立符号表的linetable,即,代码段与地址之间的对应关系表,并按照代码段所属PC的地址由高到低建立linetable的链表。但是,专利技术人经过研究发现,现有技术至少存在以下缺陷,当采用多核处理器进行 overlay调试时,由于在符号表中不能区分处理器中的多个核,所以在为一个处理器核建立 blockvector列表后,在获取符号时可能会显不符号错误,即有可能是另外一个处理器核的符 号;此外,基于相同的原因,在建立链表后,当通过顺序查找表项并显示代码和行号信息时,也可能会产生错误的结果,即,有可能会显示另外一个处理器核上一级缓存上的对应的行号信息,从而造成调试错误。
技术实现思路
有鉴于此,本专利技术实施例提供一种建立overlay符号表的方法,以解决现有技术存在的,当采用多核处理器进行overlay调试时,获取block时显示符号错误的问题。本专利技术实施例是这样实现的—方面,本申请提供了一种overlay符号表建立方法,包括建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;判断映射是否正确,包括将所述代码段的VMA和LMA与所述地址关系表中的VMA 和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立 linetable 链表。进一步的,所述核标识为通过在线读取对象target上的overlay_table而获得。进一步的,所述核标识为通过读取链接脚本中overlayjable的配置信息而获得。—方面,本申请还提供了一种overlay符号表查找方法,包括查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC 值的表项〈PC,line)中查找与所述PC对应的symbol中最小行号的值最接近的值。进一步的,还包括判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。一方面,本申请还提供了一种程序调试方法,包括建立overlay符号表方法和查找overlay符号表方法;所述建立overlay符号表方法,包括建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;判断映射是否正确,包括将所述代码段的VMA和LMA与所述地址关系表中的VMA 和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立 linetable 链表所述查找overlay符号表方法包括查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC 值的表项〈PC,line)中查找与所述PC对应的symbol中最小行号的值最接近的值。进一步的,还包括判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。6进一步的,所述核标识为通过在线读取对象target上的overlay_table而获得。 —table进一步的,所述核标识为通过读取链接脚本中overlayjable的配置信息而获得。—方面,本申请还提供了一种overlay符号表建立装置,包括关系表建立模块,用于建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从 overlay 表 overlay_table 中获取;映射匹配模块,用于判断映射是否_正ta确ble,包括将所述代码段的VMA和 LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;矢量块建立模块,用于建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述 blockvector的核标识;Linetable建立模块,用于建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表。进一步的,所述关系表建立|旲块包括核标识获取单元,用于通过读取链接脚本中overlay_table的配置信息在线读取 target上的overlay_tabl获得核标识。—方面,本申请还提供了一种overlay符号表查找装置,包括块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;sym本文档来自技高网
...

【技术保护点】
一种overlay符号表建立方法,其特征在于,包括:建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表。

【技术特征摘要】

【专利技术属性】
技术研发人员:卓玉樟崔世强
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1