函数调用关系检测方法、装置、设备及存储介质制造方法及图纸

技术编号:24454734 阅读:30 留言:0更新日期:2020-06-10 15:13
本发明专利技术提供了一种函数调用关系检测方法、装置、设备及存储介质,用于检测待检测函数与检测点函数之间是否具有调用关系,为待检测函数添加静态函数,静态函数定义为被调用时,生成包括当前调用的返回地址和检测点函数的条目;将调用待检测函数的动作修改为调用静态函数,以由静态函数调用待检测函数。由此,对于原本直接调用待检测函数的函数,可以通过调用静态函数来调用待检测函数,并且在这一过程中,可以得到包括当前调用的返回地址和检测点函数的条目,从而可以为检测待检测函数与检测点函数之间是否具有调用关系提供实现基础。

Method, device, equipment and storage medium of function call relation detection

【技术实现步骤摘要】
函数调用关系检测方法、装置、设备及存储介质
本专利技术涉及函数调用,特别是涉及一种函数调用关系检测方法、装置、设备及存储介质。
技术介绍
栈回溯的实现依赖于编译器的特性,与特定的平台相关,通常有两种方法,以linux内核实现的ARM栈回溯为例,通过向gcc传递-mapcs或-fununwind-tables可以选择APCS或unwind之一进行栈回溯。使用APCS(ARMProcedureCallStandard)进行ARM栈回溯的过程中,调用标准规范了ARM寄存器的使用,函数调用时的出栈入栈规定,在栈中根据标准可以准确的进行栈回溯,但APCS中,函数的入栈和出栈对栈的消耗较大,占用的寄存器较多,而Unwind避免了此问题。Unwind将每个函数的入栈时的偏移单独保存在一个段中,在栈回溯的时候通过查表的方式查找父函数在栈中的返回地址。APCS和Unwind是栈回溯的标准方式,但并不能解决某些特定场景下的函数调用问题。例如:1.栈回溯需要逐步进行,对于A->B->C(A中调用B函数,B中调用C函数)的情景,有时我们只关本文档来自技高网...

【技术保护点】
1.一种函数调用关系检测方法,用于检测待检测函数与检测点函数之间是否具有调用关系,其特征在于,包括:/n为待检测函数添加静态函数,所述静态函数定义为被调用时,生成包括当前调用的返回地址和检测点函数的条目;/n将调用所述待检测函数的动作修改为调用所述静态函数,以由所述静态函数调用所述待检测函数。/n

【技术特征摘要】
1.一种函数调用关系检测方法,用于检测待检测函数与检测点函数之间是否具有调用关系,其特征在于,包括:
为待检测函数添加静态函数,所述静态函数定义为被调用时,生成包括当前调用的返回地址和检测点函数的条目;
将调用所述待检测函数的动作修改为调用所述静态函数,以由所述静态函数调用所述待检测函数。


2.根据权利要求1所述的函数调用关系检测方法,其特征在于,还包括:
对所述待检测函数进行重命名,以标识所述待检测函数。


3.根据权利要求1所述的函数调用关系检测方法,其特征在于,还包括:
响应于所述检测点函数被调用,保存与所述检测点函数对应的标记。


4.根据权利要求3所述的函数调用关系检测方法,其特征在于,还包括:
响应于所述检测点函数被调用后返回,清除与所述检测点函数对应的标记。


5.根据权利要求3所述的函数调用关系检测方法,其特征在于,还包括:
在所述待检测函数中添加检测模块,所述检测模块用于响应于所述待检测函数被调用,检测所述待检测函数与所述检测点函数之间是否存在调用关系。


6.根据权利要求5所述的函数调用关系检测方法,其特征在于,所述检测所述待检测函数与所述检测点函数之间是否存在调用关系的步骤包括:
根据当前调用的返回地址,在与当前调用的返回地址对应的条目中查找检测点函数;
在查找到所述检测点函数的情况下,检查是否存在与所述检测点函数对应的标记。


7.根据权利要求6所述的函数调用关系检测方法,其特征在于,还包括:
在检测到存在与所述检测点函数对应的标记的情况下,判定所述待检测函数与所述检测点函数存在调用关系。


8.一种函数调用关系检测方法,其特征在于,包括:
获取编译期间生成的条目,所述条目包括返回地址和检测点函数,其中,所述条目是在与待检测函数对应的静态函数被调用时生...

【专利技术属性】
技术研发人员:李丹裘绍翔王佳琦
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1