管理实现的方法和装置的制作方法

文档序号:6462116阅读:158来源:国知局
专利名称:管理实现的方法和装置的制作方法
技术领域
本发明涉及应用系统领域,并且特别地,涉及一种管理实现的 方法和装置。
背景技术
目前,桌面操作系统在嵌入式设备上得到广泛的应用,桌面操
作系统通常带有自己的shell (命令解析器),例如,windows的cmd (windows命令解析器)、linux的shell,这些shell能执行命令,但 不能执行函数。
然而在嵌入式应用里,由于shell不能执行函数和查看修改全局 变量,这样会极大的降低开发的效率。通常,嵌入式设备里存在大 量的芯片,这些芯片有很庞大的寄存器需要配置调试,不可能每次 通过写程序来调试这些寄存器,通过在shell下反复4丸行函数来调试 这些寄存器的效率很高。另外,通常会将测试代码写成一个函数的 形式,如果shell不能执行函数,就需要起一个线程来执行此测试代 码,非常的不方便。再次,在shell下需要能修改查看全局变量的值, 全局变量通常是程序中非常重要的数据结构,通过查看全局变量的 值可以了解程序运行状态,》务改全局变量的值可以改变程序4丸行流 程,因此,在程序运行中查看或修改全局变量的值是非常必要的。然而,在桌面4喿作系统中,由于shell的进禾呈间禾呈序空间独立, 所以shell作为一个进程不允许访问另外一个进程的程序空间,因此 它不能执行另外一个进程里的函数。
综上所述,目前存在由于桌面操作系统的shell不能执行函数和 查看修改全局变量而导致开发的效率极大降低的问题。而目前尚未 提出能够解决该问题的技术方案。

发明内容
考虑到上述问题而做出本发明,为此,本发明的主要目的在于 提供一种管理实现方法和装置,以解决相关技术中由于桌面操作系 统的shell不能4丸行函数和查看修改全局变量而导致开发的效率极 大降低的问题。
才艮据本发明的实施例,4是供了一种管理实现方法。
该方法包括步骤S102,从可执行文件中提取包含函数符号以 及全局变量符号的符号表,并接收输入内容;步骤S104,根据输入 内容的函数输入格式或变量输入格式在符号表中获取与输入内容相 匹配的函数符号或全局变量符号,其中,在获取了到函数符号的情 况下执行查找到的函数符号所对应的函数,在获取了全局变量符号 的情况下对获取的全局变量符号所对应的全局变量数据进行指定处 理。
其中,符号表包括函数符号与对应的函凄t地址,以及全局变量 符号与对应的全局变量地址、以及对应的全局变量的:lt据长度。
并且,上述的变量输入4各式可以包括查询4各式,包括查询标 识、待查询的全局变量的符号,其中,查询标识用于表示其所在变 量输入格式对应的指定处理为查询操作;以及修改格式,包括修改标识,待修改的全局变量的符号、待修改的全局变量的修改值,其 中,修改标识用于表示其所在变量输入格式对应的指定处理为修改 操作。
此时,在变量,叙入格式为查询格式的情况下,步骤S104进一 步包括根据输入内容中的全局变量符号获取符号表中相应的全局 变量地址和全局变量的数据长度;4艮据获取的全局变量地址和全局 变量的数据长度查询相应的全局变量的数据。
此时,在变量输入格式为修改格式的情况下,步骤S104进一 步包括根据变量输入格式中待修改的全局变量的符号、待修改的 全局变量的修改值、以及根据待修改的全局变量的符号在符号表中 查找到的待修改的全局变量的地址、数据长度来修改全局变量的数据。
此时,在待查询的全局变量或待修改的全局变量为数据结构中 的全局变量的情况下,变量输入格式中进一步包括该全局变量在其 凄t据结构中的偏移位置以及力务改彩:据长度。
另外,在执行查找到的函数符号所对应的函数之前,可以进一 步包括才艮据查找到的函凄t符号确定与其对应的函凄史地址,4艮据确 定的函数地址查找相应的函数。
除此之外,上述的函凄t输入4各式至少包括函数符号。
根据本发明的另一实施例,提供了一种管理实现装置。
该装置包括提取模块,用于从可执行文件中提取包含函数符 号以及全局变量符号的符号表,并接收输入内容;查询模块,用于 根据输入内容的函数输入格式或变量输入格式在符号表中获取与输 入内容相匹配的函数符号或全局变量符号;执行模块,在获取了函数符号的情况下执行查找到的函数符号所对应的函数,以及在获取 了全局变量符号的情况下对获取的全局变量符号所对应的全局变量 数据进行指定处理。
该装置的执行模块可进一步包括查询和修改模块,用于在查 询模块根据输入内容的变量输入格式查找到相匹配的全局变量符号 后,还根据该变量输入格式中的查询信息或1奮改信息来查询或〗多改 全局变量符号对应的全局变量的数据。
通过本发明的上述技术方案,能够使桌面操作系统的shell执行 函数和查看修改全局变量从而实现对全局变量的管理,^提高开发的 效率,节约开发成本,还有助于提高嵌入式用户工作效率。


此处所说明的附图用来提供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并 不构成对本发明的不当限定。在附图中
图l是根据本发明的方法实施例的管理实现方法的流程图;以

图2是根据本发明的装置实施例的管理实现装置的框图。
具体实施方式
方法实施例
在本实施例,提供了一种管理实现方法。图1为根据本实施例 的管理实现方法的流程图,如图l所示,该方法包括步骤S102, 从可执行文件中提取包含函数符号以及全局变量符号的符号表,并接收输入内容;步骤S104,根据输入内容的函数输入格式或变量输
号,其中,在获取了到函数符号所对应的函数,在获取了全局变量
符号的情况下对获取的全局变量符号所对应的全局变量数据进行指 定处理。
其中,符号表包括函lt符号与对应的函^t地址,以及全局变量 符号与对应的全局变量地址、以及对应的全局变量的数据长度。
并且,上述的变量输入格式可以包括查询才各式,包括查询标 识、待查询的全局变量的符号,其中,查询标识用于表示其所在变 量输入格式对应的指定处理为查询操作;以及修改格式,包括修改 标识,待修改的全局变量的符号、待修改的全局变量的修改值,其 中,修改标识用于表示其所在变量输入格式对应的指定处理为修改 操作。
此时,在变量输入才各式为查询格式的情况下,步艰《S104进一 步包括根据输入内容中的全局变量符号获取符号表中相应的全局 变量地址和全局变量的数据长度;根据获取的全局变量地址和全局 变量的凝:据长度查询相应的全局变量的数据。
此时,在变量输入格式为修改格式的情况下,步骤S104进一 步包括根据变量输入格式中待修改的全局变量的符号、待修改的 全局变量的修改值、以及根据待修改的全局变量的符号在符号表中 查找到的待修改的全局变量的地址、数据长度来修改全局变量的数 据。
此时,在待查询的全局变量或待4奮改的全局变量为凄t据结构中 的全局变量的情况下,变量输入格式中进一步包括该全局变量在其 数据结构中的偏移位置以及修改数据长度。另外,在执行查找到的函数符号所对应的函数之前,可以进一
步包括根据查找到的函数符号确定与其对应的函数地址,根据确 定的函数地址查找相应的函数。
除此之外,上述的函数输入格式至少包括函数符号。
在实际应用当中,可以将执行函数输入格式定义为func xl x2 x3,其中,xl、 x2、和x3为参数,参数之间用空格隔开,其中,func 即为上述的函数符号。定义查看全局变量输入才各式为dsym,其中, sym为全局变量符号。定义f爹改全局变量的llr入格式为m sym value [offset length],其中,sym为符号、value为要々务改的变量值、offset 为此全局变量对应数据结构内偏移地址、length为要修改数据长度。
也就是说, 一个全局变量符号对应的数据类型的长度是可以通 过符号表查出来的,但是,如果符号对应是一结构体,可能需要4奮 改结构体内一个成员的值,所以在定义修改全局变量时提供了 offset 、 length输入。
根据上述方法,具体步骤如下
第一步,在程序初始化代码里打开此程序位于文件系统里的可 执行文件,根据可执行文件格式标准(例如,ELF、 PE等)从文件 里提取出符号表,具体的提取方法将在下面结合具体的文件类型进 行描述。符号表里包含此多线程程序所有函数符号,函数地址,所 有全局变量符号,各全局变量地址以及各全局变量对应数据结构大 小;
第二步,在^皮测试进程里创建两个线程Tl、 T2,其中,线程 Tl做为串口监听线程,主要用于接收串口输入(嵌入式设备的shell 主要输入设备是串口,这里也可以是其它输入)。线程T2用来处理 线程Tl 4妄收的用户输入的一4亍命令;第三步,线程T2将用户输入的一行字符串分解,将函数名、 变量名在步骤1生成的符号表里解析出此函数名或变量名地址,此 符号对应大小、类型等;第四步,如果是函数,根据函数地址,以及函数的输入参数即 可以执行此函数;第五步,如果是查看变量,#>据变量地址和变量大小(即数据 长度)可以从数据空间中读出此变量对应数据结构里所有数据,打 印出来;第六步,如果是修改变量,根据变量地址和变量大小(即数据 长度)以及输入的要修改的变量值、offset、 length则可以修改该变 量的值。其中,可执行文件格式有很多,下面将以ELF格式作为例子进 4亍-洋细i兌明。ELF (可执行文件)是Linux缺省采用的可执行文件(其中, 包括共享库、object文件)的才各式。ELF文件中的代码、连4妄信息、 和注释是以节(section )为单^f立存^t的,并存有一个节头表(section header)。对每一节,在节头表中都有一个表项(节头表项)与之对 应,该表项记录了该节的一些信息,例如,该节在文件中的位置信 息和该节的字节长度信息。在所有这些节中,有一节的内容由字符串构成,这些字符串是 各节的名称,称之为节名表。另有两节,节名为".dynsym"和 ".symtab",其内容为符号表,符号表的每一个表项记录了 一个符 号的相关信息,例如该符号对应的代码的地址值。最后,还有两节, 节名为".dynstr"和".strtab",其内容由字符串构成。大多数符号 在该节中有一个字符串与之对应,这个字符串是该符号的符号名。ELF文件开始处的一^殳为ELF文件头,其中记录了节头表在文 件中的偏移,节头表的表项数目和节头表每个表项的字节长度。它 还记录了节名表所在的节的索引序号。
下面就以ELF格式为例,对具体提取处理进行详细的说明。
第一步读取ELF文件头,在ELF文件中取出以下内容1, 节头表在文件中的偏移,获取节头表在文件中的位置;2,节头表的 表项数目和节头表每个表项的字节长度;3,节名表所在的节的索引 序号。ELF文件头在文件中的偏移为零,即起始于ELF文件开头的 第一字节;
第二步依据节头表在文件中的偏移和节名表所在的节的索引 序号,定出节名表在节头表中对应的表项的文件偏移,即,定出该 表项在文件中的位置。读取该表项,耳又出节名表在文件中的偏移和 该节在文件中的字节长度。按节名表在文件中的偏移和该节的长度 读取节名表,并緩存在一个緩冲区中;
第三步依据节头表在文件中的偏移、节头表的表项总数、以 及节头表每个表项长度搜索节头表。对每个节头表项,读出节名索 引号,由节名索引号从上面緩存在緩沖区中节名表得出该节头表项 对应的节的名字。名字为.dynsym和.symtab的节的内容是符号表, 除了记录它们文件中的偏移和字节长度外,此时还要记下它的每个 表项的长度;
其中,在搜索节头表时,还要找到名字为.dynstr和.strtab节, 这两节的内容为符号对应字符串,此时记下它的在文件中的偏移和
字节长度。由该节在文件中的偏移和字节长度读取它的内容,并緩 存在一个緩沖区中;第四步按第三步中所得到的.dynsym节的字节长度和符号表 的表项的长度算出符号表表项数目,即,符号的数目。然后依据第到符号表所在的位置,检索符号表找到要修改的符号。方法是从符 号表表项中读出符号名索引号(st—name)的值,这个值即是该表项 记录其信息的符号的符号名字符串在.dynstr节中的偏移,由这个值 在第三步中緩存.dynstr节的緩沖区中取出符号名,把符号名和要找 的符号的符号名进行比较。如果没能找到,按同样办法在.symtab 和.smabl中4臾索;第五步如果第四步中找到了要修改的符号,把该符号在符号 表(.dynsym节或.symtab节)中表项i己录下来,表项的内容是对该 符号的有关信息的记录。如符号地址值(st—value)为此符号地址, 符号代码长度(st—size)对全局变量来说是该符号对应数据结构的 总长度,而对函数名来说则为该函数编译后的指令长度,符号类型 (st一info)则指明此符号对应的是变量还是函数,是局部符号(即 声明为static类型)还是全局符号。上述5个步骤详细il明了对于一个给定的多线程程序,如何乂人 其elf可4丸4于文件里纟是取处函^:或变量对应的地址和其符号类型大 小等。唯一的前提是编译链接后采用strip为缩小可执行文件大小去 除无关section时不能去除上面所述 4 个节 (section): .dynsym、 .symtab、 .dynstr、 .strtab。其中,如果是函数,则根据函数地址,函数输入参数即可以执 4亍此函凄t。如果是查看变量,4艮据变量地址和变量大小可以乂人凄t据 空间中读出此变量对应数据结构里所有数据,打印出来。如果是修 改变量,根据变量地址和变量大小以及输入的要修改的变量值、 offset, length则可以修改该变量的值。装置实施例
在本实施例中,提供了一种管理实现装置。
如图2所示,根据本实施例的管理实现装置包括提取^^莫块202, 用于从可执行文件中提取包含函数符号以及全局变量符号的符号 表,并接收输入内容;查询模块204,用于根据输入内容的函数输
号或全局变量符号;执行模块206,在获取了函数符号的情况下执 行查找到的函数符号所对应的函数,以及在获取了全局变量符号的 情况下对获取的全局变量符号所对应的全局变量数据进行指定处 理。
并且,该装置的执行模块206进一步包括查询和修改模块, 用于在查询模块204根据输入内容的变量输入格式查找到相匹配的 全局变量符号后,还根据该变量输入格式中的查询信息或修改信息 来查询或修改全局变量符号对应的全局变量的数据。
其中,查询信息包括查询标识、待查询的全局变量的符号, 其中,查询标识用于表示其所在变量输入格式对应的指定处理为查 询操作;修改信息包括修改标识,待修改的全局变量的符号、待 修改的全局变量的修改值,其中,修改标识用于表示其所在变量输 入格式对应的指定处理为修改操作。
综上所述,借助于本发明的技术方案,能够使桌面操作系统的 shell执行函数和查看修改全局变量从而实现对全局变量的管理,提 高开发的效率,节约开发成本,还有助于提高嵌入式用户工作效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种管理实现方法,其特征在于,包括步骤S102,从可执行文件中提取包含函数符号以及全局变量符号的符号表,并接收输入内容;步骤S104,根据所述输入内容的函数输入格式或变量输入格式在所述符号表中获取与所述输入内容相匹配的函数符号或全局变量符号,其中,在获取了函数符号的情况下执行查找到的所述函数符号所对应的函数,在获取了全局变量符号的情况下对获取的所述全局变量符号所对应的全局变量数据进行指定处理。
2. 根据权利要求1所述的方法,其特征在于,所述符号表包括函 数符号与对应的函数地址、以及全局变量符号与对应的全局变 量地址、以及对应的全局变量的数据长度。
3. 根据权利要求2所述的方法,其特征在于,所述变量输入格式 包括查询格式,包括查询标识、待查询的全局变量的符号,其 中,所述查询标识用于表示其所在变量输入格式对应的指定处 ^里为查询4喿作;以及修改格式,包括修改标识,待修改的全局变量的符号、所 述待》务改的全局变量的修改值,其中,所述〗'l"改标识用于表示 其所在变量输入格式对应的指定处理为修改操作。
4. 4艮据权利要求3所述的方法,其特征在于,在所述变量输入;^各 式为所述查询4各式的情况下,所述步骤S104进一步包括根据所述输入内容中的所述全局变量符号获取所述符号表中相应的全局变量地址和全局变量的数据长度;根据获耳又的所述全局变量地址和全局变量的lt据长度查 询相应的全局变量的数据。
5. 根据权利要求3所述的方法,其特征在于,在所述变量输入格 式为所述修改格式的情况下,所述步骤S104进一步包括根据所述变量输入格式中待修改的全局变量的符号、所述 待修改的全局变量的^f奮改值、以及根据所述待修改的全局变量 的符号在所述符号表中查找到的所述待修改的全局变量的地 址、数据长度来修改所述全局变量的数据。
6. 根据权利要求3所述的方法,其特征在于,在所述待查询的全 局变量或所述待修改的全局变量为数据结构中的全局变量的 情况下,所述变量输入格式中进一步包括该全局变量在其数据 结构中的偏移位置以及修改数据长度。
7. 根据权利要求2所述的方法,其特征在于,在执行查找到的所 述函数符号所对应的函数之前,进一步包括根据查找到的所述函数符号确定与其对应的函数地址,根 据确定的所述函数地址查找相应的函数。
8. 根据权利要求2所述的方法,其特征在于,所述函凄t输入才各式 至少包括函数符号。
9. 一种管理实现装置,其特征在于,包括提取模块,用于从可执行文件中提取包含函数符号以及全 局变量符号的符号表,并接收输入内容;查询模块,用于根据所述输入内容的函数输入格式或变量符号或全局变量符号;执行模块,在获取了函数符号的情况下执行查找到的所述 函数符号所对应的函数,以及在获取了全局变量符号的情况下 对获取的所述全局变量符号所对应的全局变量数据进行指定 处理。
10. 根据权利要求9所述的装置,其特征在于,所述执行模块进一 步包括查询和修改模块,用于在所述查询模块根据所述输入内容 的变量输入才各式查找到相匹配的全局变量符号后,还4艮据该变 量输入格式中的查询信息或修改信息来查询或修改所述全局 变量符号对应的全局变量的数据。
全文摘要
本发明公开了一种管理实现方法,包括步骤S102,从可执行文件中提取包含函数符号以及全局变量符号的符号表,并接收输入内容;步骤S104,根据输入内容的函数输入格式或变量输入格式在符号表中获取与输入内容相匹配的函数符号或全局变量符号,其中,在获取了到函数符号的情况下执行查找到的函数符号所对应的函数,在获取了全局变量符号的情况下对获取的全局变量符号所对应的全局变量数据进行指定处理。本发明还公开了一种管理实现装置。通过本发明,能够使桌面操作系统实现对全局变量的管理,提高开发的效率,节约开发成本,还有助于提高嵌入式用户工作效率。
文档编号G06F9/44GK101251799SQ20081009046
公开日2008年8月27日 申请日期2008年4月16日 优先权日2008年4月16日
发明者李金虎 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1