2011-06-23 93 views
2

我在调试一个开源库,该库有一个在加载时被初始化的结构。其中一个结构的成员是一个函数指针。什么是最快的方法来确定它指向哪个功能?例如,如果我打印出函数指针的值,是否有一些工具可以用来查找函数的名称?我在嵌入式Linux系统上执行此操作,并且GDB不可用(尚未)。这个地址指向哪个函数?

回答

5

链接器可以输出一个映射文件。假设你的功能不移动,你可以在那里查找地址。生成地图文件的选项可能会有所不同;在我的Mac上它是-mapLinux man page表示它是-Map

除此之外,如果您没有工作源代码级调试解决方案,您应该做的第一件事情是得到一个。停止所有其他工作,直到您拥有适合开发的基础设施。您可能必须努力说服您的管理层认为这很重要,但希望您能让他们理解。

1

我认为你会发现addr2line command有用。

+0

我拥有的地址是共享库中的一个函数。我猜我需要得到库的基地址并从指针中减去它。获取共享库的基址的最简单方法是什么? – waffleman

+0

您是否尝试过addr2line?它应该追逐由可执行文件引用的共享库并提出一个答案... – Nemo

相关问题