我需要从已编译的 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 命令,那就太好了。