2012-06-14 62 views
0

我需要从编译后的c程序中获取有关全局变量的信息。我在here问了一个类似的问题。objdump/readelf获取变量信息

我现在的问题是,我试图提取变量信息的程序非常大,只需要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的this link我相信有一个例子如何获取有关类型的信息。这里是一个事先知情同意:

enter image description here

我正在约15秒解析我需要什么,仍然有一些错误。如果我不必重新发明轮子并更好地使用readelf命令,那将会很好。

+0

你解决了这个问题吗?你只是试图让'readelf'的解析/提取信息更快? – Zac

回答

0

您可以尝试Andy Wingo的新dltool实用程序,该实用程序会为您解析DWARF信息。

+0

我需要在Windows上解析它...我可能能够在Windows上编译,我会试试看。 –