2012-06-14 21 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上編譯,我會試試看。 –