【发布时间】:2012-06-17 21:13:27
【问题描述】:
我需要从已编译的 c 程序中获取有关全局变量的信息。我在here问过类似的问题。
我现在遇到的问题是我试图提取变量信息的程序非常大,只需 4 秒就可以将树变成文本 (readelf -w[i] file.out)。然后我必须解析来回跳跃的树才能到达我需要的地方。例如,如果一个变量的类型是const unsigned char * volatile MyVariable,那么我将不得不导航到树的 5 个不同节点,如果程序包含 1000 个变量,那么需要一段时间才能得到我需要的东西。
所以我的问题是如何更好地利用 readelf 命令来实现我所需要的。 readelf -w[i] file.out 命令为我提供了我需要的更多信息(每个函数、子程序、局部变量等)。例如,我没有通过该命令的输出来获取全局变量,而是使用readelf -s --wide file.out 命令来获取变量。该命令只会给我变量的名称,所以我仍然需要在树中查看变量是否为整数。
在this link 的第 237 页上,我相信有一个示例说明如何获取有关类型的信息。这是一张图片:
我需要大约 15 秒来解析我需要的内容,但仍然有几个错误。如果我不必重新发明轮子并更好地使用 readelf 命令,那就太好了。
【问题讨论】:
-
你解决了吗?您是否只是想让您从
readelf更快地解析/提取信息?
标签: gcc objdump readelf debug-information