0

我需要从已编译的 c 程序中获取有关全局变量的信息。我在这里问了一个类似的问题。

我现在遇到的问题是我试图提取变量信息的程序非常大,只需要 4 秒才能获得文本中的树(readelf -w[i] file.out)。然后我必须解析来回跳跃的树才能到达我需要的地方。例如,如果一个变量是类型的,const unsigned char * volatile MyVariable那么我将不得不导航到树的 5 个不同节点,如果程序包含 1000 个变量,那么需要一段时间才能得到我需要的东西。

所以我的问题是如何更好地利用 readelf 命令来实现我所需要的。该readelf -w[i] file.out命令为我提供了我需要的更多信息(每个函数、子程序、局部变量等)。例如,我没有通过该命令的输出来获取全局变量,而是使用该readelf -s --wide file.out命令来获取变量。该命令只会给我变量的名称,所以我仍然需要在树中查看变量是否为整数。

此链接的第 237 页上,我相信有一个示例说明如何获取有关类型的信息。这是一张照片:

在此处输入图像描述

我需要大约 15 秒来解析我需要的内容,但仍然有几个错误。如果我不必重新发明轮子并更好地使用 readelf 命令,那就太好了。

4

1 回答 1

0

您可以尝试使用 Andy Wingo 的新dltool实用程序,它会为您完成所有 DWARF 信息的解析。

于 2012-06-26T22:01:44.300 回答