一种分析函数栈大小的方法技术

技术编号:11399884 阅读:102 留言:0更新日期:2015-05-03 14:57
本发明专利技术涉及嵌入式系统技术领域,尤其涉及一种分析函数栈大小的方法,通过使用现成的工具sed、awk等和shell脚本语言来实现预期功能特性,这些现成的工具在不同硬件平台上都已经有相应的执行程序,其中采用脚本语言编码简单,不需编译链接,可跨平台直接运行,进而通过该方法可以生成超过指定栈大小的所有函数列表,根据列表信息可以通过分析相应函数源码,以提前识别出潜在的栈溢出风险。

【技术实现步骤摘要】
一种分析函数栈大小的方法
本专利技术涉及嵌入式系统
,尤其涉及一种分析函数栈大小的方法。
技术介绍
vxWorks操作系统是以任务为调度单位,每个任务有单独的栈空间。栈是任务的一个缓存区,在任务创建时根据指定大小从内存中分配。C语言函数局部变量、部分函数参数等都会存放在栈中,因此,每个函数都需要占用一定大小的栈缓存。当一个任务函数调用链中所有函数使用的栈缓存超过任务的栈大小时,导致栈溢出。栈溢出会导致非法修改其他地址的内存内容,给系统带来不可预知的问题,甚至崩溃。因此必须要查询使用栈缓存超过指定大小的函数,并且把这些函数作为可能存在隐患的风险点,可以使用其他的方法进行进一步分析,以排除风险点。目前没有查询到该功能的具体实现方法,但通常是采用类似c语言的编译型语言编码,编译链接生成可执行文件;然后通过执行可执行文件得到查询结果。但是,编译型语言编码复杂,且针对不同的硬件(cpu)平台需要分别编译链接,这些均是本领域技术人员所不期望见到的。
技术实现思路
鉴于上述问题,本专利技术提供一种分析函数栈大小的方法,通过该方法可以生成超过指定栈大小的所有函数列表,根据列表信息可以通过分析相应函本文档来自技高网...
一种分析函数栈大小的方法

【技术保护点】
一种分析函数栈大小的方法,其特征在于,所述方法包括:步骤S1、提供一初始文件,所述初始文件具有若干声明函数行,以及部分所述声明函数行所对应的栈缓存行;每个所述声明函数行中均包括有声明函数的函数名称,每个所述栈缓存行中均包括有用于缓存的栈的大小;步骤S2、对所述初始文件添加行号,以生成第一文件;步骤S3、提取所述第一文件中的所述声明函数行,以生成第一合并文件;提取所述第一文件中的所述栈缓存行,以生成第二合并文件;步骤S4、根据行号排列的顺序,将所述第一合并文件和所述第二合并文件进行合并,以生成第二文件;步骤S5、提取所述第二文件中的各所述栈缓存行和每个所述栈缓存行所对应的声明函数行,以生成第三文...

【技术特征摘要】
1.一种分析函数栈大小的方法,其特征在于,基于解释型语言实现,所述方法包括:步骤S1、提供一初始文件,所述初始文件具有若干声明函数行,以及部分所述声明函数行所对应的栈缓存行;每个所述声明函数行中均包括有声明函数的函数名称,每个所述栈缓存行中均包括有用于缓存的栈的大小;步骤S2、对所述初始文件添加行号,以生成第一文件;步骤S3、提取所述第一文件中的所述声明函数行,以生成第一合并文件;提取所述第一文件中的所述栈缓存行,以生成第二合并文件;步骤S4、根据行号排列的顺序,将所述第一合并文件和所述第二合并文件进行合并,以生成第二文件;步骤S5、提取所述第二文件中的各所述栈缓存行和每个所述栈缓存行所对应的声明函数行,以生成第三文件;步骤S6、提取所述第三文件中的函数名称和栈大小,并将每个所述函数名称和对应该函数名称的栈大小进行输出,以生成第四文件;步骤S7、提取所述第四文件中栈大小大于或等于预定值的声明函数,以生成列表输出文件。2.如权利要求1所述的分析函数栈大小的方法,其特征在于,所述方法还包括:步骤S8、删除所述第一文件、所述第二文件、所述第三文件和所述第四文件。3.如权利要求1所述的分析函数栈大小的方法,其特征在于,所述初始文件为...

【专利技术属性】
技术研发人员:钟捷群
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海;31

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

1