快速定位到函数指针所对应的函数

版权声明:转载请标明出处 https://blog.csdn.net/networkhunter/article/details/84023122

在程序员的世界里,在定位问题,查看不是很熟悉的代码的时候,经常会遇到函数指针的使用。单从函数指针的使用来说,从指针的名字来看很难判断这个函数的真实名字,实际上真正调用的是哪个函数,如果一个一个函数加打印,又过于太慢了,浪费大量的时间,本篇就是一种在不太熟悉整个程序架构的情况下能快速定位函数指针所指的函数的方法。

方法简述,通过获得该指针的地址,可以在程序中加打印语句来获得,之后在将这个地址和编译时或者从二进制文件中解析出的symbol表进行对比,一般symbol表中都会有内存中地址和函数名的对应关系,这样搜索地址所对应的函数名就是本指针函数所对应真实的函数名。

举例说明:有如下代码,代码是从net-snmp的开原代码中得来的。

Vp->findVar是一个函数指针,想要到它所对应的真实的函数名称,我们要做的是首先添加打印,将该地址打印出来  例如:

这一句会把该函数地址打印出来,vp->findVar address: 20322b14 , 把该地址用于以下命令的输入,执行结果可得到该函数指针所对应的函数名。

以上是一vxworks操作系统为例,其它的操作系统,例如 linux等,原理都是相同的,通过该方法很容易定位到指针所对应的函数地址。

猜你喜欢

转载自blog.csdn.net/networkhunter/article/details/84023122