一种输出函数执行流的方法、系统和终端设备技术方案

技术编号:7700346 阅读:164 留言:0更新日期:2012-08-23 05:25
本发明专利技术公开一种输出函数执行流的方法、系统和终端设备,本发明专利技术通过在目标程序中写入软中断号,运行所述目标程序,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。所述执行流清楚的记录了函数的调用关系,能够快速、动态地观察目标程序实际运行的逻辑,降低了软件研发和维护成本,缩短了软件研发和调试的时间。在编译源代码时,生成所述源代码中所有函数被编译时的栈帧信息,同时取消优化选项,从而准确地在每个函数中写入软中断号,进一步准确地输出函数的执行流。

【技术实现步骤摘要】

本专利技术涉及函数调用领域,尤其涉及一种输出函数执行流的方法、系统和终端设备
技术介绍
传统的软件调试技术分为以下两种方式1,执行到断点处,ARM核进入调试暂停模式,这时候可通过外部给JTAG接ロ信号输入指令进行单步执行;2,通过监控方法监控设置好的数据观察点和执行观察点。这时候ARM处于真实运行的环境;以上两种方法存在如下技术问题I、只能观察到测试观察点,只起了局部了解源程序的作用;2、不能清楚了解程序中的函数调用关系;3、不能快速动态观察目标程序实际运行的逻辑;从而软件研发和维护成本高,软件研发和调试的效率低。
技术实现思路
本专利技术实施例的目的在于提出一种输出函数执行流的方法、系统和终端设备,旨在解决现有技术中的调试技术只能观察到测试观察点,只起了局部了解源程序的作用;不能清楚了解程序中的函数调用关系;不能快速动态观察目标程序实际运行的逻辑;软件研发和维护成本高、软件研发和调试的效率低的技术问题。本专利技术实施例是这样实现的,一种输出函数执行流的方法,包括以下步骤编译源代码生成目标程序,修改所述目标程序并写入软中断号;运行所述修改后的目标程序;判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。本专利技术实施例的另一目的在于提出一种输出函数执行流的系统,所述系统包括编译模块、写软中断号模块、运行模块、判断模 块和输出模块;所述编译模块,与所述写软中断号模块相连,用于编译源代码生成目标程序;所述写软中断号模块,与所述编译模块和运行模块相连,用于修改所述目标程序并写入软中断号;所述运行模块,与所述写软中断号模块和判断模块相连,用于运行所述修改后的目标程序;所述判断模块,与所述运行模块和输出模块相连,用于判断所述目标程序中的函数是否存在所述软中断号,若存在则通知所述输出模块;所述输出模块,与所述判断模块相连,用于接收所述判断模块的通知,并输出所述函数的执行流。本专利技术实施例的另一目的在于提出ー种包含所述输出函数执行流系统的终端设备。本专利技术的有益效果本专利技术通过在目标程序中写入软中断号,运行所述目标程序,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。所述执行流清楚的记录了函数调用关系,并可以获取所有的现场函数,能够快速、动态地观察目标程序实际运行 的逻辑,降低了软件研发和维护成本,缩短了软件研发和调试的时间。在编译源代码时,编译器生成所述源代码中所有函数被编译时的栈帧信息,同时取消优化选项,这时每个函数有且只有ー个sub fp, ip, #4指令,通过所述sub fp, ip, #4指令准确地将指令mov ip,sp的机器码修改为软中断号,进ー步准确地输出函数的执行流。运行修改软中断号后的目标程序,获取LR寄存器的值,并通过LR-4作为数据存取的地址获取所述地址中的SWI软中断指令的24位数据,如果所获取的24位数据为所修改的软中断号,则输出LR寄存器的值,否则,跳转到系统本身的软中断处理程序的起始处。通过输出LR寄存器的值,能够输出R0-R14的全部内容。此外,修改软中断号和输出LR寄存器的值的过程可以分别封装为PC工具和软中断程序,进ー步提高工作效率,且,在程序调试过程中,目标程序完全处于实际运行状态,不影响软中断程序的运行。附图说明图I是本专利技术一种输出函数执行流方法的第一优选实施例的流程图;图2是本专利技术一种输出函数执行流方法的第二优选实施例的流程图;图3是本专利技术一种输出函数执行流方法的第三优选实施例的流程图;图4是本专利技术一种输出函数执行流系统的第一优选实施例的结构示意图;图5是本专利技术一种输出函数执行流系统的第二优选实施例的结构示意图;图6是本专利技术一种输出函数执行流系统的第三优选实施例的结构示意图;图7是本专利技术一种输出函数执行流系统的第四优选实施例的结构示意图;图8是本专利技术一种输出函数执行流系统的第五优选实施例的结构示意图;图9是本专利技术一种输出函数执行流系统的第六优选实施例的结构示意图。具体实施例方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本专利技术进行进ー步详细说明,为了便于说明,仅示出了与本专利技术实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本专利技术,并不用以限制本专利技术。本专利技术通过在目标程序中写入软中断号,运行所述目标程序,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。所述执行流清楚的记录了函数调用关系,并可以获取所有的现场函数,能够快速、动态地观察目标程序实际运行的逻辑,降低了软件研发和维护成本,缩短了软件研发和调试的时间。在编译源代码时,编译器生成所述源代码中所有函数被编译时的栈帧信息,同时取消优化选项,这时每个函数有且只有ー个sub fp, ip, #4指令,通过所述sub fp, ip, #4指令准确地将指令mov ip,SP的机器码修改为软中断号,进ー步准确地输出函数的执行流。运行修改软中断号后的目标程序,获取LR寄存器的值,并通过LR-4作为数据存取的地址获取所述地址中的SWI软中断指令的24位数据,如果所获取的24位数据为所修改的软中断号,则输出LR寄存器的值,否 则,跳转到系统本身的软中断处理程序的起始处。通过输出LR寄存器的值,能够输出R0-R14的全部内容。此外,修改软中断号和输出LR寄存器的值的过程可以分别封装为PC工具和软中断程序,进ー步提高工作效率,且,在程序调试过程中,目标程序完全处于实际运行状态,不影响软中断程序的运行。实施例一图I是本专利技术一种输出函数执行流方法的第一优选实施例的流程图。所述的方法包括以下步骤S101,编译源代码生成目标程序,修改所述目标程序并写入软中断号;S102,运行所述修改后的目标程序;S103,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流;所述“编译源代码生成目标程序”包括取消优化选项,编译源代码生成目标程序,生成所述源代码中所有函数被编译时的栈帧信息;所述“生成所述源代码中所有函数被编译时的栈帧信息”具体为ip寄存器保存sp的值mov ip, sp ;ip寄存器里的值减4保存到fp寄存器sub fp, ip, #4 ;所述优化选项为编译器中的包含-02、-01、-03等带“0”的选项參数。实施例ニ图2是本专利技术一种输出函数执行流方法的第二优选实施例的流程图。所述的方法包括以下步骤S201,取消优化选项,编译源代码生成目标程序,并生成所述源代码中所有函数被编译时的栈帧信息;编译源代码时由编译器取消优化选项,编译所述源代码生成目标程序,并生成所述源代码中所有函数被编译时的栈帧信息;S202,查找目标程序中“ ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据;即查找目标程序中的sub fp, ip, #4指令的ニ进制数据;取消优化选项的情况下,mov ip, sp指令是编译器进入每个函数的第一条指令,所述sub fp, ip, #4为执行函数初始化的充分必要条件具体为根据栈帧原理fp寄存器是在函数进行处理前必须要保存sp寄存器作为帧底;函数执行时编译器已把fp寄存器做为栈地址存储之用,不可能用于其它目的,即不可能出现指令给sp寄存器存入新的值,否则将破坏栈帧规范;所以sub fp, ip, #本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种输出函数执行流的方法,所述方法包括步骤 编译源代码生成目标程序,修改所述目标程序并写入软中断号; 运行所述修改后的目标程序; 判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。2.根据权利要求I所述的输出函数执行流的方法,其特征在于,所述“编译源代码生成目标程序”包括取消优化选项,编译源代码生成目标程序,生成所述源代码中所有函数被编译时的栈帧信息。3.根据权利要求2所述的输出函数执行流的方法,其特征在于,所述“修改所述目标程序并写入软中断号”具体为 查找目标程序中“将ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据; 向回查询“ sp寄存器中的值保存到ip寄存器”指令的ニ进制数据; 将所述“sp寄存器中的值保存到ip寄存器”指令相对应的机器码修改为软中断号。4.根据权利要求3所述的输出函数执行流的方法,其特征在于,所述“判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流”具体为 获取LR寄存器的值; 将LR寄存器中的地址减4作为数据存取的地址,获取所述地址中的SWI软中断指令的.24位数据; 判断所获取的24位数据是否为软中断号,如果是,则输出LR寄存器的值。5.根据权利要求4所述的输出函数执行流的方法,其特征在于,所述步骤“判断所获取的24位数据是否为软中断号,如果是,则输出LR寄存器的值”之后还包括步骤 将sp寄存器中的值保存到ip寄存器; 返回到LR寄存器的值上继续执行当前函数。6.根据权利要求4所述的输出函数执行流的方法,其特征在于,所述步骤“判断所获取的24位数据是否为的软中断号,如果是,则输出LR寄存器的值”之后还包括步骤 如果否,则跳转到系统本身的软中断处理程序的起始处。7.一种输出函数执行流的系统,其特征在于,所述系统包括编译模块、写软中断号模块、运行模块、判断模块和输出模块; 所述编译模块,与所述写软中断号模块相连,用于编译源代码生成目标程序; 所述写软中断号模块,与所述编译模块和运行模块相连,用于修改所述目标程序并写入软中断号; 所述运行模块,与所述写...

【专利技术属性】
技术研发人员:刘骁
申请(专利权)人:深圳市融创天下科技股份有限公司
类型:发明
国别省市:

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

1