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

文档序号:6366133阅读:210来源:国知局
专利名称:一种输出函数执行流的方法、系统和终端设备的制作方法
技术领域
本发明涉及函数调用领域,尤其涉及一种输出函数执行流的方法、系统和终端设备。
背景技术
传统的软件调试技术分为以下两种方式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, #4表示进入ー个新函数且只能有ー个sub fp, ip, #4 ;S203,向回查询“sp寄存器中的值保存到ip寄存器”指令的ニ进制数据;即向回查询mov ip, sp指令的ニ进制数据;找到所述“ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据后,向回查询直到找到“ SP寄存器的值保存到ip寄存器”指令的ニ进制数据;即,找到所述SUb fp,ip, #4指令的ニ进制数据后,向回查询直到找到mov ip, sp指令的ニ进制数据;S204,将所述“sp寄存器的值保存到ip寄存器”指令相对应的机器码修改为软中断号,即将所述mov ip, sp指令相对应的机器码修改为软中断号;所述软中断号为不会被系统所使用的值,例如Oxaaaaaa,所述机器码Oxefaaaaaa表不软中断指令swi Oxaaaaaa ;S205,运行修改软中断号后的目标程序;S206,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。实施例三图3是本发明一种输出函数执行流方法的第三优选实施例的流程图。所述的方法包括以下步骤S301,取消优化选项,编译源代码生成目标程序,并生成所述源代码中所有函数被编译时的栈帧信息;S302,查找目标程序中“ ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据;即查找目标程序中的sub fp, ip, #4指令的ニ进制数据;S303,向回查询“sp寄存器中的值保存到ip寄存器”指令的ニ进制数据;即向回查询mov ip, sp指令的ニ进制数据;S304,将所述“sp寄存器中的值保存到ip寄存器”指令相对应的机器码修改为软中断号,即将所述mov ip, sp指令相对应的机器码修改为软中断号;S305,运行修改软中断号后的目标程序;S306,获取LR寄存器的值;即获取LR寄存器的当前值;所述LR寄存器是CPU通用寄存器之一,LR寄存器的当前值保存了进入软中断且软中断处理完成后的返回地址,具体由CPU内核硬件自动保存,也就是软中断处理完成后退出时执行的下一条指令的地址,例如Swi OxaaaaaaMov r0, r0 (LR)所述指令Mov r0, r0 (LR)就为软中断处理完成后退出时执行的下一条指令;S307,将“LR寄存器中的值减4”作为数据存取的地址,获取所述地址中的SWI软中断指令的24位数据;即将LR-4作为数据存取的地址获取所述地址中的SWI软中断指令的24位数据;例如,所述24位数据为所述机器码Oxefaaaaaa的低24位,即Oxaaaaaa ;SffI (Software Interrupt,软中断),是 CPU 指令集中的指令;LR寄存器的值是软中断处理完成后退出时执行的下一条指令的地址,那么LR-4就是当前执行软中断指令时的地址;、
S308,判断所获取的24位数据是否为软中断号,如果否,则进入步骤S309,如果是,则进入步骤S310 ;如果是,则表示所获取的24位数据为修改后的软中断号;如果否,则表示所获取的24位数据为系统已有的软中断指令;S309,跳转到系统本身的软中断处理程序的起始处;
S310,输出LR寄存器的值;输出软中断处理完成后退出时执行的下一条指令的地址,即输出当前函数的执行流;所输出的LR寄存器的值可以用于绘制函数调用树等,从而形象表示出程序中的函数之间的调用关系;S311,将sp寄存器中的值保存到ip寄存器;即执行指令mov ip, sp ;S312,返回到LR寄存器的值上继续执行当前函数; 结束软中断处理,返回到软中断处理完成后退出时执行的下一条指令的地址上继续执行当前函数。对上述方案进ー步优化在于,所述“修改所述目标程序并写入软中断号”的过程封装为PC工具,通过所述PC工具修改所述目标程序并写入软中断号。所述PC工具为VC集成开发环境下开发出来的应用程序,用于修改编译器生成的ニ进制目标文件,并写入软中断号。对上述方案进ー步优化在于,所述“判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流”的过程封装为软中断程序,通过执行所述软中断程序输出函数执行流。本发明通过在目标程序中写入软中断号,运行所述目标程序,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。所述执行流清楚的记录了函数调用关系,并可以获取所有的现场函数,能够快速、动态地观察目标程序实际运行的逻辑,降低了软件研发和维护成本,缩短了软件研发和调试的时间。在编译源代码时,编译器生成所述源代码中所有函数被编译时的栈帧信息,同时取消优化选项,这时每个函数有且只有ー个sub fp, ip, #4指令,通过所述sub fp, ip, #4指令准确地将指令mov ip,sp的机器码修改为软中断号,进ー步准确地输出函数的执行流。运行修改软中断号后的目标程序,获取LR寄存器的值,并通过LR-4作为数据存取的地址获取所述地址中的SWI软中断指令的24位数据,如果所获取的24位数据为所修改的软中断号,则输出LR寄存器的值,否则,跳转到系统本身的软中断处理程序的起始处。通过输出LR寄存器的值,能够输出R0-R14的全部内容。此外,修改软中断号和输出LR寄存器的值的过程可以分别封装为PC工具和软中断程序,进ー步提高工作效率,且,在程序调试过程中,目标程序完全处于实际运行状态,不影响软中断程序的运行。实施例四图4是本发明一种输出函数执行流系统的第一优选实施例的结构示意图。所述的系统包括编译模块、写软中断号模块、运行模块、判断模块和输出模块;所述编译模块,与所述写软中断号模块相连,用于编译源代码生成目标程序;所述写软中断号模块,与所述编译模块和运行模块相连,用于修改所述目标程序并写入软中断号;所述运行模块,与所述写软中断号模块和判断模块相连,用于运行所述修改后的目标程序;所述判断模块,与所述运行模块和输出模块相连,用于判断所述目标程序中的函数是否存在所述软中断号,若存在则通知所述输出模块;
所述输出模块,与所述判断模块相连,用于接收所述判断模块的通知,并输出所述函数的执行流。对上述方案进ー步优化在于,所述编译模块包括栈帧信息単元、取消优选单元和生成目标单元,如图5所示为本发明一种输出函数执行流系统的第二优选实施例的结构示意图。所述栈帧信息単元,与所述取消优选单元相连,用于生成所述源代码中所有函数被编译时的栈帧信息,具体为ip寄存器保存sp的值mov ip, spip寄存器里的值减4保存到fp寄存器sub fp, ip, #4 ;所述取消优选单元,与所述栈帧信息単元和生成目标单元相连,用于取消优化选项;所述取消优化选项指取消编译器中的參数包含_02、-01、-03等带“0”的选项;所述生成目标单元,与所述取消优选单元和写软中断号模块相连,用于生成目标程序。对上述方案进ー步优化在于,所述写软中断号模块包括第一查找单元、第二查找単元和修改単元,如图6所示为本发明一种输出函数执行流系统的第三优选实施例的结构示意图。所述第一查找单元,与所述第二查找单元和生成目标单元相连,用于查找目标程序中“ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据;取消优化选项的情况下,mov ip, sp指令是编译器进入函数的第一条指令,所述sub fp, ip, #4为执行函数初始化的充分必要条件具体为根据栈帧原理fp寄存器是在函数进行处理前必须要保存sp寄存器作为帧底;函数执行时编译器已把fp寄存器做为栈地址存储之用,不可能用于其它目的,即不可能出现指令给sp寄存器存入新的值,否则将破坏栈帧规范;所以sub fp, ip, #4表示进入ー个新函数且只能有ー个sub fp, ip, #4 ;所述第二查找单元,与所述第一查找单元和修改単元相连,用于向回查询“sp寄存器中的值保存到ip寄存器”指令的ニ进制数据;即向回查询movip,sp指令的ニ进制数据;找到所述“ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据后,向回查询直到找到“ sp寄存器的值保存到ip寄存器”指令的ニ进制数据;即找到所述sub fp, ip, #4指令的ニ进制数据后,向回查询直到找到movip, sp指令的ニ进制数据; 所述修改単元,与所述第二查找单元和运行模块相连,用于将所述“sp寄存器的值保存到ip寄存器”指令相对应的机器码修改为软中断号,即将所述mov ip, sp指令相对应的机器码修改为软中断号;所述软中断号为不会被系统所使用的值,例如Oxaaaaaa,所述机器码Oxefaaaaaa表不软中断指令swi Oxaaaaaa0对上述方案进ー步优化在于,所述判断模块包括获取LR值单元、获取数据单元和判断単元,如图7所示为本发明一种输出函数执行流系统的第四优选实施例的结构示意图。所述获取LR值单元,与所述获取数据单元和运行模块相连,用于获取LR寄存器的值;即获取LR寄存器的当前值;所述LR寄存器是CPU通用寄存器之一,LR寄存器的当前值保存了进入软中断后软中断处理完成后的返回地址,具体由CPU内核硬件自动保存,也就是软中断处理完成后退出时执行的下一条指令的地址, 例如Swi OxaaaaaaMov rO, rO (LR)所述指令Mov rO, rO(LR)就为软中断处理完成后退出时执行的下一条指令;所述获取数据单元,与所述获取LR值单元和判断単元相连,用于将“LR寄存器中的值减4”作为数据存取的地址,获取所述地址中的SWI软中断指令的24位数据;即将LR-4作为数据存取的地址获取所述地址中的SWI软中断指令的24位数据;例如,所述24位数据为所述机器码Oxefaaaaaa的低24位,即Oxaaaaaa ;SffI (Software Interrupt,软中断),是 CPU 指令集中的指令;LR寄存器的值是软中断处理完成后退出时执行的下一条指令的地址,那么LR-4就是当前执行软中断指令时的地址;所述判断単元,与所述获取数据单元和输出模块相连,用于判断所获取的24位数据是否为软中断号,如果是,则通知输出模块;如果是,则表示所获取的24位数据为修改后的软中断号;所述输出模块还用于接收所述判断単元的通知,并输出LR寄存器的值;输出软中断处理完成后退出时执行的下一条指令的地址,即输出当前函数的执行流。对上述方案进ー步优化在于,所述系统还包括返回模块,如图8所示为本发明一种输出函数执行流系统的第五优选实施例的结构示意图;所述返回模块,与所述输出模块相连,用于将sp寄存器中的值保存到ip寄存器(即执行指令mov ip, sp),并返回到LR寄存器的值上继续执行当前函数;结束软中断处理,返回到软中断退出时执行的下一条指令的地址上继续执行当前函数。对上述方案进ー步优化在于,所述系统还包括跳转模块,如图9所示为本发明一种输出函数执行流系统的第六优选实施例的结构示意图;所述判断単元,与所述获取数据单元、输出模块和跳转模块相连,还用于判断所获取的24位数据是否为的软中断号,如果否,则通知所述跳转模块;所述跳转模块,与所述判断模块相连,用于接收所述判断単元的通知,并跳转到系统本身的软中断处理程序的起始处;如果否,则表示所获取的24位数据为系统已有的软中断号。本发明通过编译模块编译源代码生成目标程序;写软中断号模块修改所述目标程序并写入软中断号;运行模块运行所述目标程序;判断模块判断所述目标程序中的函数是否存在所述软中断号,若存在则由输出模块输出所述函数的执行流。所述执行流清楚的记录了函数调用关系,并可以获取所有的现场函数,能够快速、动态地观察目标程序实际运行的逻辑,降低了软件研发和维护成本,缩短了软件研发和调试的时间。进ー步,在编译源代码时,栈帧信息単元生成所述源代码中所有函数被编译时的栈帧信息;取消优选单元取消优化选项;这时每个函数有且只有ー个指令sub fp, ip, #4,通过第一查找单元查找目标程序中的sub fp, ip, #4指令的ニ进制数据;第二查找单元向回查询mov ip, sp指令的ニ进制数据;修改单元将所述mov ip, sp指令相对应的机器码修改为软中断号;从而准确地针对每个函数写入软中断号。进一歩,目标程序投入运行时,获取LR值单元获取LR寄存器的值;获取数据单元将LR寄存器中的值减4作为数据存取的地址,获取所述地址中的SWI软中断指令的24位数据;判断単元判断所获取的24位数据是否为软中断号,如果是,则由输出模块输出LR寄存器的值;如果否,则由跳转模块跳转到系统本身的软中断处理程序的起 始处。通过输出LR寄存器的值,能够输出R0-R14的全部内容。此外,修改软中断号和输出LR寄存器的值的过程可以分别封装为PC工具和软中断程序,进ー步提高工作效率,且,在程序调试过程中,目标程序完全处于实际运行状态,不影响软中断程序的运行。本发明提供的输出函数执行流的系统可以应用于需要输出函数执行流的的終端设备上,例如PC、PDA、手机、服务器等。本领域的普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序指令相关硬件来完成的,所述的程序可以存储于计算机可读取存储介质中,所述的存储介质可以为ROM、RAM、磁盘、光盘等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
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.一种输出函数执行流的系统,其特征在于,所述系统包括编译模块、写软中断号模块、运行模块、判断模块和输出模块; 所述编译模块,与所述写软中断号模块相连,用于编译源代码生成目标程序; 所述写软中断号模块,与所述编译模块和运行模块相连,用于修改所述目标程序并写入软中断号; 所述运行模块,与所述写软中断号模块和判断模块相连,用于运行所述修改后的目标程序; 所述判断模块,与所述运行模块和输出模块相连,用于判断所述目标程序中的函数是否存在所述软中断号,若存在则通知所述输出模块; 所述输出模块,与所述判断模块相连,用于接收所述判断模块的通知,并输出所述函数的执行流。
8.根据权利要求7所述的输出函数执行流的系统,其特征在于,所述编译模块包括栈帧信息単元、取消优选单元和生成目标单元;所述栈帧信息単元,与所述取消优选单元相连,用于生成所述源代码中所有函数被编译时的栈帧信息; 所述取消优选单元,与所述栈帧信息単元和生成目标单元相连,用于取消优化选项; 所述生成目标单元,与所述取消优选单元和写软中断号模块相连,用于生成目标程序。
9.根据权利要求8所述的输出函数执行流的系统,其特征在于,所述写软中断号模块包括第一查找单元、第二查找单元和修改単元; 所述第一查找单元,与所述第二查找单元和生成目标单元相连,用于查找目标程序中“ip寄存器里的值减4保存到fp寄存器”指令的ニ进制数据; 所述第二查找单元,与所述第一查找单元和修改単元相连,用于向回查询“sp寄存器中的值保存到ip寄存器”指令的ニ进制数据; 所述修改単元,与所述第二查找单元和运行模块相连,用于将所述“sp寄存器中的值保存到ip寄存器”指令相对应的机器码修改为软中断号。
10.根据权利要求9所述的输出函数执行流的系统,其特征在于,所述判断模块包括获取LR值单元、获取数据单元和判断単元; 所述获取LR值单元,与所述获取数据单元和运行模块相连,用于获取LR寄存器的值;所述获取数据单元,与所述获取LR值单元和判断単元相连,用于将“LR寄存器中的值减4”作为数据存取的地址,获取所述地址中的SWI软中断指令的24位数据; 所述判断単元,与所述获取数据单元和输出模块相连,用于判断所获取的24位数据是否为软中断号,如果是,则通知输出模块; 所述输出模块还用于接收所述判断単元的通知,并输出LR寄存器的值。
11.一种输出函数执行流的終端设备,其特征在于,所述的终端设备包括权利要求7-10任一种所述的输出函数执行流的系统。
全文摘要
本发明公开一种输出函数执行流的方法、系统和终端设备,本发明通过在目标程序中写入软中断号,运行所述目标程序,判断所述目标程序中的函数是否存在所述软中断号,若存在则输出所述函数的执行流。所述执行流清楚的记录了函数的调用关系,能够快速、动态地观察目标程序实际运行的逻辑,降低了软件研发和维护成本,缩短了软件研发和调试的时间。在编译源代码时,生成所述源代码中所有函数被编译时的栈帧信息,同时取消优化选项,从而准确地在每个函数中写入软中断号,进一步准确地输出函数的执行流。
文档编号G06F9/45GK102646051SQ20121006465
公开日2012年8月22日 申请日期2012年3月13日 优先权日2012年3月13日
发明者刘骁 申请人:深圳市融创天下科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1