发明名称 |
确定函数调用关系的方法、装置及系统 |
摘要 |
本发明实施例涉及一种确定函数调用关系的方法、装置及系统,其中,确定函数调用关系的方法包括:从函数的当前代码段指令地址处开始向高地址方向搜索指令,获得所述函数的第一SP偏移值;从所述代码段指令地址处开始向低地址方向搜索指令,获得所述函数的第二SP偏移值,以及获得保存函数返回地址的地址相对函数的栈帧的偏移值;根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,当所述SP偏移值符合预设要求时,所述函数的堆栈指针指向所述函数的栈帧,根据所述函数的栈帧及所述偏移值,得到所述函数的返回地址。通过高低地址双向追溯函数调用关系,提高追溯函数调用关系的准确性。 |
申请公布号 |
CN102109975B |
申请公布日期 |
2015.03.11 |
申请号 |
CN200910261275.X |
申请日期 |
2009.12.24 |
申请人 |
华为技术有限公司 |
发明人 |
李宁 |
分类号 |
G06F9/30(2006.01)I;G06F9/34(2006.01)I |
主分类号 |
G06F9/30(2006.01)I |
代理机构 |
北京凯特来知识产权代理有限公司 11260 |
代理人 |
郑立明;焦丽 |
主权项 |
一种确定函数调用关系的方法,其特征在于,包括:从函数的当前代码段指令地址处开始向高地址方向搜索指令,获得所述函数的第一堆栈指针SP偏移值;从所述当前代码段指令地址处开始向低地址方向搜索指令,获得所述函数的第二SP偏移值,以及获得保存函数返回地址的地址相对函数的栈帧的偏移值;根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,当所述函数的SP偏移值符合预设要求时,所述函数的堆栈指针指向所述函数的栈帧,根据所述函数的栈帧及所述保存函数返回地址的地址相对函数的栈帧的偏移值,得到所述函数的返回地址;根据所述第一SP偏移值及第二SP偏移值获得所述函数的SP偏移值,当所述函数的SP偏移值符合预设要求时,所述函数的堆栈指针指向所述函数的栈帧,包括:获得函数异常时或调试函数时所述函数的堆栈指针;将所述第一SP偏移值及第二SP偏移值累加获得所述函数的SP偏移值;确定所述函数的SP偏移值符合预设要求,所述函数的堆栈指针指向所述函数的栈帧;所述预设要求包括:SP向低地址方向增长时,所述函数的SP偏移值的预设要求为所述函数的SP偏移值为负值;或者,SP向高地址方向增长时,所述函数的SP偏移值的预设要求为所述函数的SP偏移值为正值。 |
地址 |
518129 广东省深圳市龙岗区坂田华为总部办公楼 |