CN102981956A - overlay符号表建立和查找的方法、装置及程序调制系统 - Google Patents
overlay符号表建立和查找的方法、装置及程序调制系统 Download PDFInfo
- Publication number
- CN102981956A CN102981956A CN2012105050050A CN201210505005A CN102981956A CN 102981956 A CN102981956 A CN 102981956A CN 2012105050050 A CN2012105050050 A CN 2012105050050A CN 201210505005 A CN201210505005 A CN 201210505005A CN 102981956 A CN102981956 A CN 102981956A
- Authority
- CN
- China
- Prior art keywords
- overlay
- nuclear
- sign
- code segment
- vma
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了overlay符号表建立和查找的方法、装置及程序调制系统,其中overlay符号表建立方法包括:建立VMA和LMA的地址关系表时包括核标识;在判断映射是否正确时包括判断代码段对应的全局代码段所属的image所对应的核信息与地址关系表中的核标识是否匹配;建立blockvector的块链表,块链表中包括有blockvector的核标识。由于本申请中在程序调试时,可以根据核标识查找对应的块信息和对应的symtable_and_line信息,从而建立blockvector列表后,获取block时会显示正确的符号;避免了多核环境下在采用overlay方式进行程序调试时出现的调试错误。
Description
技术领域
本发明涉及程序开发领域,更具体地说,涉及overlay符号表建立和查找的方法、装置及程序调制系统。
背景技术
GDB(GNU Debugger,开源组织调试器)是开源组织发布的一个强大的UNIX下的程序调试工具。调试人员可以自定义程序或指令的运行方式;可以让被调试的程序或指令停止在设定的断点处,以使调试人员检测程序或指令的运行过程。
GDB包括用户交互界面、符号表处理模块和控制模块;其运行过程为,调试人员通过交互界面输入命令,命令和符号通过解析后,经由控制模块处理后转换为RSP协议命令到目标端;目标端解析RSP协议命令后,执行相应的命令,生成结果;符号表处理模块解析所述结果并将解析后的结果输出到交互界面。
在对命令进行编译的过程中,在内存中镜像处理器的一级缓存的地址中的代码段时,往往都是在内存中按照地址顺序来分配空间;现有技术中,可以采用overlay调试技术以缓解一级缓存空间不足,该调试技术的技术方案具体包括:
在建立overlay符号表时,首先在overlay的代码段建立<VMA,LMA>的地址关系表,从而可以实现访问VMA对应的已经映射的代码段,其中,LMA为加载内存地址,即,Load Memory Addr;VMA为虚拟内存地址,即VirtualMemory 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而获得。
进一步的,所述核标识为通过读取链接脚本中overlay_table的配置信息而获得。
一方面,本申请还提供了一种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中最小行号的值最接近的值。
进一步的,还包括:
判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
进一步的,所述核标识为通过在线读取对象target上的overlay_table而获得。_table
进一步的,所述核标识为通过读取链接脚本中overlay_table的配置信息而获得。
一方面,本申请还提供了一种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符号表查找装置,包括:
块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
symtable_and_line信息查找模块,用于查找当前执行程序中指令所对应的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建立模块,用于建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表;
所述overlay符号表查找装置包括:
块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
symtable_and_line信息查找模块,用于查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
从上述的技术方案可以看出,本申请通过建立包括VMA、LMA和核标识三元关系的地址关系表;在判断映射是否正确时,增加判断代码段对应的全局代码段所属的image所对应的核信息与地址关系表中的核标识是否匹配;建立矢量块时,按矢量块的起始地址由低到高顺序建立矢量块的块链表;并在块链表中包括有所述矢量块的核标识;建立linetable时,按PC地址由低到高顺序建立linetable链表。由于在程序调试时,可以根据核标识查找对应的块信息和对应的symtable_and_line信息,并且通过核标识还可以判断代码段是否为已映射;从而建立blockvector列表后,获取block时会显示正确的符号;此外,在根据PC地址查找符号表行号信息时可以通过PC地址对应的当前核标识来识别正确的行号信息,从而避免了多核环境下在采用overlay方式进行程序调试时出现的调试错误。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请中所述overlay符号表建立方法的步骤示意图;
图2为本申请中所述overlay符号表查找方法的步骤示意图;
图3为本申请中所述程序调制方法的步骤示意图;
图4为本申请中所述overlay符号表建立装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中,多核环境下在采用overlay方式进行程序调试时出现的调试错误的问题,本实施例提供了一种overlay符号表建立方法,如图1所示,包括:
S11、建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;
现有技术中,多核处理器环境下,进行overlay调试时,之所以会造成建立矢量块列表后,获取block时会显示符号错误,以及,在建立linetable链表后,当通过顺序查找最近一个<PC,line>大于等于PC的表项来显示代码和行号信息时,会产生错误的结果;其原因是,在建立blockvector时,并不区分多核处理器中的各个核,多核处理器中的每个核的一级缓存中的地址映射到内存中的地址是有可能相同的,这样,由于在查找块的时候,采用的是二分查找法来获取,所以获取的块都是最后排列的块,进而造成显示符号错误。此外,由于现有技术中建立的linetable链表,也无法区分多核处理器中的各个核,从而使得通过顺序查找最近一个<PC,line>大于等于PC的表项来显示代码和行号信息时,会产生错误的结果。
在本发明实施例中,为了使得在通过PC查找对应的块信息时,能够辨识块是属于哪一个核的,在建立地址关系表时,加入与所述代码段对应的处理器内核的核标识的属性。
具体的,在建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表时,建立包括VMA、LMA和核标识的三元关系表;这样,地址关系表中所包括的属性除了虚拟内存地址VMA和加载内存地址LMA以外,还包括了核属性CORE,比如,overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表可以为<VMA,LMA,CORE>;在这里,核标识可以通过在线读取target上的overlay_table获得;也可以通过读取链接脚本中overlay_table的配置信息获得。
S12、判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
由于在地址关系表中包括了核标识,所以在判断映射是否正确时,不但需要向现有技术中那样地址关系表判断VMA和LMA的地址是否匹配,而且,还要判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配。
由于在多核环境中对指定代码段进行解析时,代码段中的多个程序会分配给不同的处理器核,这样,在建立image时就会包含有核信息,通过该核信息即可识别处理器核。
在代码段对应的全局代码段所属的image所对应的核信息与地址关系表中的核标识匹配通过后,即可确定映射为正确。
S13、建立矢量块blockvector,并按照blockvector的起始地址由高到低的顺序建立blockvector的块链表,所述块链表中包括blockvector的核标识;
由于获得了核标识,所以在建立blockvector后,按startaddr地址由低到高顺序组成块链表时,可以在块链表中加入核标识属性,并赋值为对应代码段的映射核标识的值;比如可以是将处理器中的第一核赋值为01,则映射核标识属性,即CORE属性的值可以为01;处理器中的第二核赋值为02,则映射核标识属性,即CORE属性的值可以为02。
由于在本申请中,建立的块链表中,包括了核标识,所以在通过PC查找对应的块信息时,可以通过在判断条件中加入判断块中核标识是否和当前被调试核对应;这样,在判断条件中,除了判断地址以外,还需要判断核属性是否和当前被调试的核一致,从而可以找到与核对应的块。进而避免了在获取符号时会可能显示符号错误的问题。
S14、建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表;
此外,本申请在通过PC查找对应的symtable_and_line信息时,除了查找最接近的PC值的<PC,line>表项外,还需要与该PC对应的symbol中最小行号的值最接近的值。从而避免了错误显示代码和行号信息。
在本申请的另一方面,还提供了一种overlay符号表查找方法,如图2所示,包括:
S21、查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
本实施例是与图1所对应的实施例中建立overlay符号表建立方法相对应的overlay符号表查找方法,也就是说,在建立overlay符号表时,采用了图1所对应的实施例中的方法的基础上,来实施本实施例中的overlay符号表查找方法。
由于在本申请中,建立的块链表中,包括了核标识,所以在通过PC查找当前执行程序中指令对应的块信息时,可以通过在判断条件中加入判断块中核标识是否和当前被调试核对应;这样,在判断条件中,除了判断地址以外,还需要判断核属性是否和当前被调试的核一致,从而可以找到与核对应的块。进而避免了在获取符号时会可能显示符号错误的问题。
S22、查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
本申请在通过PC查找对应的symtable_and_line信息时,除了查找最接近的PC值的<PC,line>表项外,还需要与该PC对应的symbol中最小行号的值最接近的值。从而避免了错误显示代码和行号信息。
在本实施例中,还可以包括有步骤:判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
通过加入判断代码段是否为已映射这一步骤,从而可以避免代码段在没有被映射至LMA时,所造成的调试错误。
在本申请中,还提供了一种程序调试方法,如图3所示,包括建立overlay符号表方法和查找overlay符号表方法;
建立overlay符号表方法,包括:
S31、建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表时,建立包括VMA、LMA和核标识的三元关系表,所述核标识获取自overlay_table;
在本发明实施例中,为了使得在通过PC查找对应的块信息时,能够辨识块是属于哪一个核的,在建立地址关系表时,加入与所述代码段对应的处理器内核的核标识的属性。
具体的,在建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表时,建立包括VMA、LMA和核标识的三元关系表;这样,地址关系表中所包括的属性除了虚拟内存地址VMA和加载内存地址LMA以外,还包括了核属性CORE,比如,overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表可以为<VMA,LMA,CORE>;在这里,核标识可以通过在线读取target上的overlay_table获得;也可以通过读取链接脚本中overlay_table的配置信息获得。
S32、判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
由于在地址关系表中包括了核标识,所以在判断映射是否正确时,不但需要向现有技术中那样地址关系表判断VMA和LMA的地址是否匹配,而且,还要判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配。
由于在多核环境中对指定代码段进行解析时,代码段中的多个程序会分配给不同的处理器核,这样,在建立image时就会包含有核信息,通过该核信息即可识别处理器核。
在代码段对应的全局代码段所属的image所对应的核信息与地址关系表中的核标识匹配通过后,即可确定映射为正确。
S33、建立矢量块blockvector,并按照blockvector的起始地址由高到低的顺序建立blockvector的块链表,所述块链表中包括blockvector的核标识;
由于获得了核标识,所以在建立blockvector后,按startaddr地址由低到高顺序组成块链表时,可以在块链表中加入核标识属性,并赋值为对应代码段的映射核标识的值;比如可以是将处理器中的第一核赋值为01,则映射核标识属性,即CORE属性的值可以为01;处理器中的第二核赋值为02,则映射核标识属性,即CORE属性的值可以为02。
由于在本申请中,建立的块链表中,包括了核标识,所以在通过PC查找对应的块信息时,可以通过在判断条件中加入判断块中核标识是否和当前被调试核对应;这样,在判断条件中,除了判断地址以外,还需要判断核属性是否和当前被调试的核一致,从而可以找到与核对应的块。进而避免了在获取符号时会可能显示符号错误的问题。
S34、建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表;
此外,本申请在通过PC查找对应的symtable_and_line信息时,除了查找最接近的PC值的<PC,line>表项外,还需要与该PC对应的symbol中最小行号的值最接近的值。从而避免了错误显示代码和行号信息。
查找overlay符号表方法包括:
S35、查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
由于在本申请中,建立的块链表中,包括了核标识,所以在通过PC查找当前执行程序中指令对应的块信息时,可以通过在判断条件中加入判断块中核标识是否和当前被调试核对应;这样,在判断条件中,除了判断地址以外,还需要判断核属性是否和当前被调试的核一致,从而可以找到与核对应的块。进而避免了在获取符号时会可能显示符号错误的问题。
S36、查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
本申请在通过PC查找对应的symtable_and_line信息时,除了查找最接近的PC值的<PC,line>表项外,还需要与该PC对应的symbol中最小行号的值最接近的值。从而避免了错误显示代码和行号信息。
在本实施例中,还可以包括有步骤:判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
通过加入判断代码段是否为已映射这一步骤,从而可以避免代码段在没有被映射至LMA时,所造成的调试错误。
在本申请中,还提供了一种overlay符号表建立装置,如图4所示,包括:
关系表建立模块11,用于建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表时,建立包括VMA、LMA和核标识的三元关系表,核标识获取自overlay_table;
现有技术中,多核处理器环境下,进行overlay调试时,之所以会造成建立矢量块列表后,获取block时会显示符号错误,以及,在建立linetable链表后,当通过顺序查找最近一个<PC,line>大于等于PC的表项来显示代码和行号信息时,会产生错误的结果;其原因是,在建立blockvector时,并不区分多核处理器中的各个核,多核处理器中的每个核的一级缓存中的地址映射到内存中的地址是有可能相同的,这样,由于在查找块的时候,采用的是二分查找法来获取,所以获取的块都是最后排列的块,进而造成显示符号错误。此外,由于现有技术中建立的linetable链表,也无法区分多核处理器中的各个核,从而使得通过顺序查找最近一个<PC,line>大于等于PC的表项来显示代码和行号信息时,会产生错误的结果。
在本发明实施例中,为了使得在通过PC查找对应的块信息时,能够辨识块是属于哪一个核的,在建立地址关系表时,通过关系表建立模块,加入与所述代码段对应的处理器内核的核标识的属性。
具体的,在建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表时,建立包括VMA、LMA和核标识的三元关系表;这样,地址关系表中所包括的属性除了虚拟内存地址VMA和加载内存地址LMA以外,还包括了核属性CORE,比如,verlay代码段的虚拟内存VMA和加载内存LMA的地址关系表可以为:<VMA,LMA,CORE>;在这里,核标识可以通过在线读取target上的overlay_table获得;也可以通过读取链接脚本中overlay_table的配置信息获得。
映射匹配模块12,用于在判断映射是否正确时,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
由于在地址关系表中包括了核标识,所以在判断映射是否正确时,映射匹配模块12不但需要向现有技术中那样地址关系表判断VMA和LMA的地址是否匹配,而且,还要判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配。
由于在多核环境中对指定代码段进行解析时,代码段中的多个程序会分配给不同的处理器核,这样,在建立image时就会包含有核信息,通过该核信息即可识别处理器核。
在代码段对应的全局代码段所属的image所对应的核信息与地址关系表中的核标识匹配通过后,即可确定映射为正确。
矢量块建立模块13,用于建立矢量块blockvector,并按照blockvector的起始地址由高到低的顺序建立blockvector的块链表,所述块链表中包括blockvector的核标识;
由于获得了核标识,所以矢量块建立模块13在建立blockvector后,按startaddr地址由低到高顺序组成块链表时,可以在块链表中加入核标识属性,并赋值为对应代码段的映射核标识的值;比如可以是将处理器中的第一核赋值为01,则映射核标识属性,即CORE属性的值可以为01;处理器中的第二核赋值为02,则映射核标识属性,即CORE属性的值可以为02。
由于在本申请中,建立的块链表中,包括了核标识,所以在通过PC查找对应的块信息时,可以通过在判断条件中加入判断块中核标识是否和当前被调试核对应;这样,在判断条件中,除了判断地址以外,还需要判断核属性是否和当前被调试的核一致,从而可以找到与核对应的块。进而避免了在获取符号时会可能显示符号错误的问题。
Linetable建立模块14,用于建立线性表linetable,并按代码段所属PC的地址由低到高顺序建立所述linetable链表。
在Linetable建立模块14建立线性表linetable后,本申请在通过PC查找对应的symtable_and_line信息时,除了查找最接近的PC值的<PC,line>表项外,还需要与该PC对应的symbol中最小行号的值最接近的值。从而避免了错误显示代码和行号信息。
在本申请中,还提供了一种overlay符号表查找装置,包括:
块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
本实施例是与图4所对应的实施例中建立overlay符号表建立装置相对应的overlay符号表查找装置,也就是说,在建立overlay符号表时,采用了图4所对应的实施例中的装置的基础上,来通过本实施例中的overlay符号表查找装置实施本实施例。
由于在本申请中,建立的块链表中,包括了核标识,所以由块信息查找模块在通过PC查找当前执行程序中指令所对应的块信息时,可以通过在判断条件中加入判断块中核标识是否和当前被调试核对应;这样,在判断条件中,除了判断地址以外,还需要判断核属性是否和当前被调试的核一致,从而可以找到与核对应的块。进而避免了在获取符号时会可能显示符号错误的问题。
symtable_and_line信息查找模块,用于查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
本申请在通过PC查找对应的symtable_and_line信息时,除了查找最接近的PC值的<PC,line>表项外,还需要与该PC对应的symbol中最小行号的值最接近的值。从而避免了错误显示代码和行号信息。
进一步的,在本实施例中,还可以包括有映射判断模块,用于在判断代码段是否为已映射时,判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
通过加入映射判断模块,从而使得在判断代码段是否为已映射时,可以避免代码段在没有被映射至LMA时,所造成的调试错误。
在本申请中,还提供了一种程序调试系统,包括overlay符号表建立装置和overlay符号表查找装置;
所述overlay符号表建立装置包括:
关系表建立模块,用于建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;
映射匹配模块,用于判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
矢量块建立模块,用于建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;
Linetable建立模块,用于建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表;
所述overlay符号表查找装置包括:
块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
symtable_and_line信息查找模块,用于查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
由于在本实施例中的overlay符号表建立装置与图4所对应实施例中的建立overlay符号表建立装置类似,且,本实施例中的overlay符号表查找装置与上述实施例中查找overlay符号表查找装置类似,其技术方案和技术效果也相同,所以在此就不再赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (14)
1.一种overlay符号表建立方法,其特征在于,包括:
建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;
判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;
建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表。
2.根据权利要求1所述overlay符号表建立方法,其特征在于,所述核标识为通过在线读取对象target上的overlay_table而获得。
3.根据权利要求1所述overlay符号表建立方法,其特征在于,所述核标识为通过读取链接脚本中overlay_table的配置信息而获得。
4.一种overlay符号表查找方法,其特征在于,包括:
查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
查找当前执行程序中指令所对应的符号表及行号symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的符号symbol中最小行号的值最接近的值。
5.根据权利要求4所述overlay符号表查找方法,其特征在于,还包括:
判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
6.一种程序调试方法,其特征在于,包括建立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中最小行号的值最接近的值。
7.根据权利要求6所述程序调试方法,其特征在于,还包括:
判断代码段是否为已映射,包括判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
8.根据权利要求7所述程序调试方法,其特征在于,所述核标识为通过在线读取对象target上的overlay_table而获得。
9.根据权利要求7所述程序_调tab试le方法,其特征在于,所述核标识为通过读取链接脚本中overlay_table的配置信息而获得。
10.一种overlay符号表建立装置,其特征在于,包括:
关系表建立模块,用于建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;
映射匹配模块,用于判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
矢量块建立模块,用于建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;
Linetable建立模块,用于建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表。
11.根据权利要求10所述overlay符号表建立装置,其特征在于,所述关系表建立模块包括:
核标识获取单元,用于通过读取链接脚本中overlay_table的配置信息在线读取target上的overlay_tabl获得核标识。
12.一种overlay符号表查找装置,其特征在于,包括:
块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
symtable_and_line信息查找模块,用于查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
13.根据权利要求12所述overlay符号表查找装置,其特征在于,还包括:
映射判断模块,用于在判断代码段是否为已映射时,判断所述代码段中块信息中的所述核标识是否与当前被调试核对应。
14.一种程序调试系统,包括overlay符号表建立装置和overlay符号表查找装置:
所述overlay符号表建立装置包括:
关系表建立模块,用于建立overlay代码段的虚拟内存VMA和加载内存LMA的地址关系表,所述地址关系表包括VMA、LMA和核标识的三元关系,其中,所述核标识从overlay表overlay_table中获取;
映射匹配模块,用于判断映射是否正确,包括:将所述代码段的VMA和LMA与所述地址关系表中的VMA和LMA与中进行匹配,若匹配成功,则判断代码段对应的全局代码段所属的image所对应的核信息与所述地址关系表中的核标识是否匹配,若匹配成功,则认为映射正确;
矢量块建立模块,用于建立矢量块blockvector,并按照所述blockvector的起始地址由高到低的顺序建立所述blockvector的块链表,所述块链表中包括所述blockvector的核标识;
Linetable建立模块,用于建立线性表linetable,并按所述代码段所属PC的地址由低到高顺序建立linetable链表;
所述overlay符号表查找装置包括:
块信息查找模块,用于查找当前执行程序中指令所对应的块信息,包括判断块中核标识是否和当前执行程序中指令的被调试核对应;
symtable_and_line信息查找模块,用于查找当前执行程序中指令所对应的symtable_and_line信息,包括在最接近的PC值的表项<PC,line>中查找与所述PC对应的symbol中最小行号的值最接近的值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210505005.0A CN102981956B (zh) | 2012-11-30 | 2012-11-30 | overlay符号表建立和查找的方法、装置及程序调制系统 |
PCT/CN2013/076069 WO2014082432A1 (zh) | 2012-11-30 | 2013-05-22 | overlay符号表建立和查找的方法、装置及程序调制系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210505005.0A CN102981956B (zh) | 2012-11-30 | 2012-11-30 | overlay符号表建立和查找的方法、装置及程序调制系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102981956A true CN102981956A (zh) | 2013-03-20 |
CN102981956B CN102981956B (zh) | 2016-01-27 |
Family
ID=47856010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210505005.0A Active CN102981956B (zh) | 2012-11-30 | 2012-11-30 | overlay符号表建立和查找的方法、装置及程序调制系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102981956B (zh) |
WO (1) | WO2014082432A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014082432A1 (zh) * | 2012-11-30 | 2014-06-05 | 华为技术有限公司 | overlay符号表建立和查找的方法、装置及程序调制系统 |
CN109783342A (zh) * | 2017-11-10 | 2019-05-21 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
CN113157731A (zh) * | 2021-05-24 | 2021-07-23 | 北京字节跳动网络技术有限公司 | 符号解析方法、装置、设备及存储介质 |
CN113342654A (zh) * | 2021-06-08 | 2021-09-03 | 广州博冠信息科技有限公司 | 脚本语言代码调试方法及装置、可读存储介质及电子设备 |
CN113760235A (zh) * | 2021-09-10 | 2021-12-07 | 深圳市太美亚电子科技有限公司 | 一种ble开发调试系统及方法 |
CN115145700A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 用户进程抢占方法、装置、设备及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165964A (ja) * | 2003-12-05 | 2005-06-23 | Toshiba Corp | デバッガ、デバッグ装置およびオーバーレイモジュール |
US20060259822A1 (en) * | 2005-05-16 | 2006-11-16 | Texas Instruments Incorporated | Profiling system |
CN102073565A (zh) * | 2010-12-31 | 2011-05-25 | 华为技术有限公司 | 触发操作方法、多核分组调试方法、装置及系统 |
CN102117241A (zh) * | 2009-12-30 | 2011-07-06 | 华为技术有限公司 | 一种多核系统调试方法和多核系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6618854B1 (en) * | 1997-02-18 | 2003-09-09 | Advanced Micro Devices, Inc. | Remotely accessible integrated debug environment |
CN100511151C (zh) * | 2007-12-05 | 2009-07-08 | 华为技术有限公司 | 多路多核服务器及其cpu的虚拟化处理方法 |
CN102981956B (zh) * | 2012-11-30 | 2016-01-27 | 华为技术有限公司 | overlay符号表建立和查找的方法、装置及程序调制系统 |
-
2012
- 2012-11-30 CN CN201210505005.0A patent/CN102981956B/zh active Active
-
2013
- 2013-05-22 WO PCT/CN2013/076069 patent/WO2014082432A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005165964A (ja) * | 2003-12-05 | 2005-06-23 | Toshiba Corp | デバッガ、デバッグ装置およびオーバーレイモジュール |
US20060259822A1 (en) * | 2005-05-16 | 2006-11-16 | Texas Instruments Incorporated | Profiling system |
CN102117241A (zh) * | 2009-12-30 | 2011-07-06 | 华为技术有限公司 | 一种多核系统调试方法和多核系统 |
CN102073565A (zh) * | 2010-12-31 | 2011-05-25 | 华为技术有限公司 | 触发操作方法、多核分组调试方法、装置及系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014082432A1 (zh) * | 2012-11-30 | 2014-06-05 | 华为技术有限公司 | overlay符号表建立和查找的方法、装置及程序调制系统 |
CN109783342A (zh) * | 2017-11-10 | 2019-05-21 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
CN109783342B (zh) * | 2017-11-10 | 2022-03-29 | 华为技术有限公司 | 脚本调试方法、设备及计算机存储介质 |
US11360879B2 (en) | 2017-11-10 | 2022-06-14 | Huawei Technologies Co., Ltd. | Script debugging method, device, and computer storage medium |
CN115145700A (zh) * | 2021-03-31 | 2022-10-04 | 华为技术有限公司 | 用户进程抢占方法、装置、设备及计算机存储介质 |
CN113157731A (zh) * | 2021-05-24 | 2021-07-23 | 北京字节跳动网络技术有限公司 | 符号解析方法、装置、设备及存储介质 |
CN113342654A (zh) * | 2021-06-08 | 2021-09-03 | 广州博冠信息科技有限公司 | 脚本语言代码调试方法及装置、可读存储介质及电子设备 |
CN113342654B (zh) * | 2021-06-08 | 2024-04-09 | 广州博冠信息科技有限公司 | 脚本语言代码调试方法及装置、可读存储介质及电子设备 |
CN113760235A (zh) * | 2021-09-10 | 2021-12-07 | 深圳市太美亚电子科技有限公司 | 一种ble开发调试系统及方法 |
CN113760235B (zh) * | 2021-09-10 | 2023-12-19 | 深圳市太美亚电子科技有限公司 | 一种ble开发调试系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102981956B (zh) | 2016-01-27 |
WO2014082432A1 (zh) | 2014-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102981956A (zh) | overlay符号表建立和查找的方法、装置及程序调制系统 | |
CN107506300B (zh) | 一种用户界面测试方法、装置、服务器和存储介质 | |
CN110879777A (zh) | 应用界面的控件测试方法、装置、计算机设备及存储介质 | |
CN103514090A (zh) | 测试浏览器的方法和装置 | |
CN112433944A (zh) | 业务测试方法、装置、计算机设备和存储介质 | |
CN104268079A (zh) | 一种pos应用程序测试的方法及系统 | |
CN112115055A (zh) | 一种多机自动化测试方法、装置及计算机设备 | |
CN102798833A (zh) | 诊断仪自动测试系统与方法 | |
CN112463596B (zh) | 测试用例数据的处理方法、装置、设备以及处理设备 | |
CN114138253A (zh) | 图形化编程代码的测试反馈方法、装置、设备及存储介质 | |
US20150082287A1 (en) | Scenario based test design | |
US9342425B2 (en) | Test apparatus and test module | |
JP6275009B2 (ja) | 試験装置及び試験プログラム | |
KR20150096478A (ko) | 프로그래머블 컨트롤러, 프로그래머블 컨트롤러 시스템 및 실행 에러 정보 작성 방법 | |
CN110209565A (zh) | 一种元数据模型调试方法及其装置 | |
CN107766228B (zh) | 一种基于多语种的自动化测试方法和装置 | |
CN116973729A (zh) | 一种板卡的测试方法、测试治具、测试设备及介质 | |
CN111949510B (zh) | 测试处理方法、装置、电子设备及可读存储介质 | |
CN110704252B (zh) | 一种基于云端动态管理的自动测试装置和测试方法 | |
CN105954614A (zh) | 提示数据线类型的方法、装置及终端设备 | |
CN112309313A (zh) | 模组控制器配置方法、装置及系统以及计算机可读存储介质 | |
CN112035373B (zh) | 基本测试脚本的测试方法、装置、服务器及介质 | |
KR20230082020A (ko) | Excel 파일 로딩을 기반으로 한 테스트 방법, 시스템 및 설비 | |
CN112182586B (zh) | 一种mcu读写保护的测试方法、装置及系统 | |
KR101716480B1 (ko) | Gui 기반의 테스트케이스 입력 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |