從包含完全調試我的應用程序所需的所有信息的elf文件開始,我想製作一個只包含一些符號的精靈。
我設法與GNU binutils的帶工具來做到這一點:
strip -F elf32-big -p -s -K myFunc1-K myFunc2 -K myVar1 -K myVar2 myApp.elf
我這裏關注的是,myVar1
和myVar2
是結構化的變量和調試器無法深入到他們,因爲「條」移除了小精靈(中.debug_info部分。 debug_info是存儲結構定義的地方,我明白)。
理想情況下,我會在精靈中只保留調試器解析我的變量所需的東西。我玩「strip」的選項。在閱讀this thread後,我和其他的binutils(readelf,objcopy,objdump ...)一起玩。但它沒有讓人滿意。
你會怎麼做?在elf文件中保留類型定義和一些符號
0
A
回答
0
我不知道一個已經做你想做的工具。
如果我被要求這樣做,首先我會推回去。我不知道爲什麼我們不能使用現有的拆分調試信息方法,而不是試圖去除部分調試信息。再加上build-id,它具有很好的屬性,可以發佈剝離的可執行文件,但仍然可以在需要時進行完全調試 - 只需將gdb指向debuginfo ELF即可。
這就是說,如果我必須寫它,我會說,首先確切地定義你想要保留的。然後,編寫一個程序來讀取DWARF(比如,使用elfutils庫),然後用所需的信息寫出新的DWARF。
這並不是非常困難(請參閱「dwz」工具,以獲取DWARF機械手的示例...),但也不是那麼容易。
相關問題
- 1. 的preg_replace - 保留換行符和消毒一些文字
- 2. Python - 保存到Pickle文件中的數據類型保留
- 3. 自定義文件類型和圖標
- 4. ELF文件中的解析函數如何知道哪些庫是符號?
- 5. 在後端保留類型
- 6. C++將ELF文件中的類變量保存在哪裏?
- 7. 如何只保留文本文件中的一些關鍵字
- 8. 在Python中查找符號鏈接文件的文件類型
- 9. 在git倉庫中保留自定義構建配置文件
- 10. 如何在ELF文件中查找變量類型?
- 11. 在文本字段中保留逗號
- 12. 自定義類未被保留
- 13. 類型ZipArchive未在App_Code文件夾中定義未定義
- 14. 在Java中創建和讀取自定義文件類型
- 15. ELF符號表中缺少源文件 - 如何包含它們?
- 16. Trace32命令從ELF文件中讀取符號內容
- 17. 定義類的'>'符號
- 18. 如何轉義Windows批處理文件中的保留字符
- 19. 在R中保留標點符號文檔術語表
- 20. 在XML中保留原始換行符類型(\ r vs \ r \ n)
- 21. 如何在C++中打印字母和符號後保留在一個地方?
- 22. 定義一個Zend型號爲單件
- 23. 在另一個apk文件中保留一個apk文件
- 24. 在映射文件中定義枚舉類型,或從另一個表中定義枚舉類型
- 25. 如何在CEdit控件中保留插入符號位置?
- 26. 插入到mysql時保留雙引號和單引號以及轉義字符
- 27. 在一個elf文件中,如何找到變量定義的編譯單元?
- 28. 某些內容類型的Drupal 7自定義模板文件
- 29. 如何創建保存文本和圖像的自定義文件類型?
- 30. 錯誤:文件中未定義的第一個引用符號
謝謝。我仍然希望有人提出一個解決方案,並不意味着我對精靈/矮人內部構成太多打擾。爲了避免混淆,我的應用程序不是一個Linux應用程序,而是一個裸機程序,一個嵌入式調度程序,具體而言;我的調試器不是gdb,而是Lauterbach Trace32。 – Akira 2014-11-06 09:31:45