一种基于模拟器指令插桩的操作系统信息统计方法与流程

文档序号:26587850发布日期:2021-09-10 19:53阅读:50来源:国知局
一种基于模拟器指令插桩的操作系统信息统计方法与流程

1.本发明涉及操作系统信息处理技术领域,具体涉及一种基于模拟器指令插桩的操作系统信息统计方法。


背景技术:

2.模拟器使用软件仿真技术来模拟物理硬件目标系统,原来运行于真实目标机的嵌入式软件,可以不用修改就直接在模拟器上运行,并且其运行的动态特性与真实目标机上一致。利用模拟器,可以在不具备目标硬件的情况下,进行嵌入式软件开发、调试、测试和验证。
3.带操作系统的嵌入式软件调试时,若能够实时掌握操作系统的任务调度关系、任务执行时间、创建的信号量、创建的消息等信息,将对软件设计、软件故障分析和排查大有裨益。传统的操作系统信息统计在源码上进行插桩,执行时统计桩执行信息。传统源码插桩方式会侵入代码,使代码扩张。
4.因此,传统的系统信息统计方法还存在亟待改进之处,需要提出更为合理的技术方案,解决现有技术中的不足。


技术实现要素:

5.为了解决上述内容中提到的现有技术缺陷,本发明提供了一种基于模拟器指令插桩的操作系统信息统计方法,在模拟器的基础上使用指令插桩方式进行信息统计,无需更改目标程序,即可以实现对操作系统信息的统计。
6.为了实现上述目的,本发明采用的技术方案是:一种基于模拟器指令插桩的操作系统信息统计方法,包括任务信息获取和统计,其中任务信息获取过程包括:根据系统任务指令的位置进行插桩,桩信息中均包含时刻信息;在模拟器初始化时从目标程序中获取所有函数符号地址(函数首地址);执行目标任务并获取桩信息,若检查到任务创建函数则从函数参数获取任务基本信息,否则循环执行目标任务并直至获取桩信息;解析并获取任务循环主体地址范围,并从栈分配函数获取任务栈信息;信息统计过程包括:在模拟器环境下执行目标程序若检查到任务切换函数时则记录该任务起始时间,否则循环执行目标程序直至出现起始时间记录;获取栈使用范围,若栈的使用范围超过分配大小则报错,直至任务结束;任务主体结束时,获取任务执行时间。
7.上述公开的信息统计方法,可以高效的进行系统信息的收集和整理,便于在模拟器环境下进行系统的调试。
8.进一步的,本发明中所公开的统计方法,在进入系统后的不同时刻均可进行插桩,
具体的,此处进行优化并举出其中一种可行的选择:根据任务翻译期和执行期的指令进行插桩,且包括初始桩和附加桩,附加桩信息中包括辅助信息以辅助获取函数调用参数以及栈访问越界判别。采用如此方案时,附加桩的辅助信息能够收集统计更多的系统信息。
9.再进一步,本发明中在进入系统后的不同时刻均进行插桩,对应进行不同的系统信息处理,具体的,此处进行优化并举出其中一种可行的选择,所述的桩至少包括:头桩,第一条指令后插桩,标志执行开始;尾桩,模拟器停止时最后一条指令后产生桩信息,标志执行结束;分支指令桩,分支指令后插桩,用于记录跳转信息;中断异常桩,中断或异常触发时,插桩并产生桩信息;异常返回桩,异常返回指令后插桩,用于记录异常处理程序退出信息;中断信息桩,任务中断时进行插桩,用于记录中断号信息;保存现场指令桩,携带栈指针信息,用于栈访问越界判别;函数调用指令桩,用于记录函数调用参数信息;写存储指令桩,至少携带写目标地址信息。
10.采用上述插桩方案时,对时刻、指令地址、跳转起始地址、跳转目标地址、中断触发地址、中断目标地址、异常结束地址、返回目标地址、中断号、栈指针、所有寄存器值、写目标地址、写的值等均进行收集统计。
11.进一步的,模拟器环境下所获取的系统信息若干,其并不唯一限定,此处进行优化,所述的系统信息包括任务信息、信号量信息和消息。
12.再进一步,所述的任务信息至少包括任务名称、任务函数信息、任务执行时间、执行次数和栈使用情况,对应有任务创建函数、任务销毁函数、栈分配函数和任务切换函数。
13.再进一步,所述的信号量信息至少包括信号量名称、所属任务和等待任务;对应有信号量创建函数和信号量销毁函数。
14.再进一步,所述的消息至少包括消息名称、消息数量和阻塞任务;对应有信号量创建函数和信号量销毁函数。
15.进一步的,本发明中,系统持续运行则持续进行信息收集,具体的,此处进行优化并举出如下一种可行的选择:当信息统计过程完毕时,执行新的目标程序并进行信息统计。
16.进一步的,所述的获取栈使用范围,具体为根据写存储指令和保存线程指令获取栈的使用范围。
17.再进一步,信号量和消息的信息结构在相应创建函数调用时获取,需要查看某个信号量或消息时,直接通过信息结构基地址获取关注的信号量或消息。
18.与现有技术相比,本发明具有的有益效果是:本发明使用指令插桩方式,无需更改目标程序,即可以对软件的操作系统信息进行统计,不仅保持了代码的稳定和安全,还大大提高了效率。
附图说明
19.为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅表示出了本发明的部分实施例,因此不应看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这
些附图获得其它相关的附图。
20.图1为操作系统任务信息获取过程示意图。
21.图2为获取的函数符号地址示意图。
22.图3为获取的函数首尾地址示意图。
23.图4为isr_pro_int9任务主体地址范围示意图。
24.图5为任务信息统计结果示意图。
25.图6为操作系统任务信息统计过程示意图。
具体实施方式
26.下面结合附图及具体实施例对本发明做进一步阐释。
27.在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
28.实施例针对现有的操作系统信息统计方法存在侵入代码,导致代码扩张的情况,本实施例进行优化以解决现有技术中的问题。
29.具体的,本实施例公开了一种基于模拟器指令插桩的操作系统信息统计方法,包括任务信息获取和统计,其中任务信息获取过程包括:s01:对目标程序进行指令插桩;s02:在模拟器初始化时从目标程序中获取所有函数符号地址(函数首地址),如图2所示,按地址从小到大进行排序后,根据函数的无缝衔接特点,获取函数尾地址,如图3所示;s03:执行目标程序并获取桩信息,若检查到任务创建函数则从函数参数获取任务信息,否则循环执行目标任务并直至获取桩信息;s04:解析并获取任务循环主体地址范围,中断服务程序也作为任务处理,如图4中isr_pro_int9任务主体地址范围为40003b38到40003b80;s05:从栈分配函数获取任务栈信息。
30.图1给出了与上述过程相关的操作系统任务信息获取过程示意图。
31.任务信息统计过程包括:s01:在模拟器环境下执行目标程序若检查到任务切换函数时则记录该任务起始时间,否则循环执行目标程序直至出现起始时间记录,对于中断服务程序isr_pro_int9,进入isr_pro_int9即执行到首地址40003b38时记录为任务起始时间,;s02:获取栈使用范围,若栈的使用范围超过分配大小则报错,直至任务结束;s03:任务主体结束时,获取任务执行时间,对于中断服务程序isr_pro_int9,执行到尾地址40003b80时计算任务执行时间,最后任务信息统计结果如图6所示,包含任务最大、最小执行时间、栈使用情况等。
32.上述公开的信息统计方法,可以高效的进行系统信息的收集和整理,便于在模拟器环境下进行系统的调试。图5给出了与上述过程相关的任务信息统计结果示意图。
33.本实施例中所公开的统计方法,在进入系统后的不同时刻均可进行插桩,具体的,本实施例进行优化并采用其中一种可行的选择:根据任务翻译期和执行期的指令进行插桩,且包括初始桩和附加桩,附加桩信息中包括辅助信息以辅助获取函数调用参数以及栈访问越界判别。采用如此方案时,附加桩的辅助信息能够收集统计更多的系统信息。
34.本实施例中在进入系统后的不同时刻均进行插桩,对应进行不同的系统信息处理,具体的,此处进行优化并举出其中一种可行的选择,所述的桩至少包括:头桩,第一条指令后插桩,标志执行开始;尾桩,模拟器停止时最后一条指令后产生桩信息,标志执行结束;分支指令桩,分支指令后插桩,用于记录跳转信息;中断异常桩,中断或异常触发时,插桩并产生桩信息;异常返回桩,异常返回指令后插桩,用于记录异常处理程序退出信息;中断信息桩,任务中断时进行插桩,用于记录中断号信息;保存现场指令桩,携带栈指针信息,用于栈访问越界判别;函数调用指令桩,用于记录函数调用参数信息;写存储指令桩,至少携带写目标地址信息。
35.采用上述插桩方案时,对时刻、指令地址、跳转起始地址、跳转目标地址、中断触发地址、中断目标地址、异常结束地址、返回目标地址、中断号、栈指针、所有寄存器值、写目标地址、写的值等均进行收集统计。具体的,本实施例中公开了一种插桩方案,如下表1所示:表1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
插桩位置优选的,模拟器环境下所获取的系统信息若干,其并不唯一限定,本实施例进行优化,所述的系统信息包括任务信息、信号量信息和消息。
36.优选的,所述的任务信息至少包括任务名称、任务函数信息、任务执行时间、执行次数和栈使用情况,对应有任务创建函数、任务销毁函数、栈分配函数和任务切换函数。
37.优选的,所述的信号量信息至少包括信号量名称、所属任务和等待任务;对应有信号量创建函数和信号量销毁函数。
38.优选的,所述的消息至少包括消息名称、消息数量和阻塞任务;对应有信号量创建函数和信号量销毁函数。
39.系统信息可采用如下表2中所描述的内容进行搜集统计。
40.表2
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
操作系统信息本实施例中,系统持续运行则持续进行信息收集,具体的,此处进行优化并举出如下一种可行的选择:当信息统计过程完毕时,执行新的目标程序并进行信息统计。
41.优选的,所述的获取栈使用范围,具体为根据写存储指令和保存线程指令获取栈的使用范围。
42.优选的,信号量和消息的信息结构在相应创建函数调用时获取,需要查看某个信号量或消息时,直接通过信息结构基地址获取关注的信号量或消息。
43.以上即为本实施例列举的实施方式,但本实施例不局限于上述可选的实施方式,本领域技术人员可根据上述方式相互任意组合得到其他多种实施方式,任何人在本实施例的启示下都可得出其他各种形式的实施方式。上述具体实施方式不应理解成对本实施例的保护范围的限制,本实施例的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1