2014-11-04 64 views
0

從包含完全調試我的應用程序所需的所有信息的elf文件開始,我想製作一個只包含一些符號的精靈。
我設法與GNU binutils的帶工具來做到這一點:
strip -F elf32-big -p -s -K myFunc1-K myFunc2 -K myVar1 -K myVar2 myApp.elf
我這裏關注的是,myVar1myVar2是結構化的變量和調試器無法深入到他們,因爲「條」移除了小精靈(中.debug_info部分。 debug_info是存儲結構定義的地方,我明白)。
理想情況下,我會在精靈中只保留調試器解析我的變量所需的東西。我玩「strip」的選項。在閱讀this thread後,我和其他的binutils(readelf,objcopy,objdump ...)一起玩。但它沒有讓人滿意。
你會怎麼做?在elf文件中保留類型定義和一些符號

回答

0

我不知道一個已經做你想做的工具。

如果我被要求這樣做,首先我會推回去。我不知道爲什麼我們不能使用現有的拆分調試信息方法,而不是試圖去除部分調試信息。再加上build-id,它具有很好的屬性,可以發佈剝離的可執行文件,但仍然可以在需要時進行完全調試 - 只需將gdb指向debuginfo ELF即可。

這就是說,如果我必須寫它,我會說,首先確切地定義你想要保留的。然後,編寫一個程序來讀取DWARF(比如,使用elfutils庫),然後用所需的信息寫出新的DWARF。

這並不是非常困難(請參閱「dwz」工具,以獲取DWARF機械手的示例...),但也不是那麼容易。

+0

謝謝。我仍然希望有人提出一個解決方案,並不意味着我對精靈/矮人內部構成太多打擾。爲了避免混淆,我的應用程序不是一個Linux應用程序,而是一個裸機程序,一個嵌入式調度程序,具體而言;我的調試器不是gdb,而是Lauterbach Trace32。 – Akira 2014-11-06 09:31:45

相關問題