對於以DWARF格式讀取ELF文件調試信息的良好跨平臺庫的任何建議?我想在Python程序中讀取DWARF調試信息。用於讀取ELF文件的庫DWARF調試信息
19
A
回答
21
有塊一個新的孩子 - pyelftools - 一個純Python庫解析ELF和DWARF格式。試一試。
它的目標是成爲功能完善,目前在積極發展,所以任何問題,應迅速和積極處理:-)
10
5
你可能會在這裏找到有用的信息:
4
您的閱讀矮調試信息選項遺憾的是相當有限的。
據我所知,解析DWARF調試信息只有一個通用庫,那就是libdwarf。不幸的是,沒有人爲libdwarf編寫Python綁定(也許你可以自己把它與其他人分享:))你當然可以嘗試使用ctypes或Python C API來訪問庫函數。
然而,一個不太優雅的解決方案是使用現有的DWARF解析器並解析它輸出的文本信息。您的這個選項(在Linux上)是
objdump -W
readelf --debug-dump=[OPTIONS]
我目前使用過建立的readelf一個項目,它是對矮調試信息非常全功能的支持。您可以簡單地使用Python在shell中執行任一命令,然後根據需要解析信息。當然,不如圖書館理想,但應該做的伎倆。
編輯:我注意到你在之前的評論中提到過Windows。這兩個程序(objdump和readelf)都是GNU-binutils的一部分,所以它們應該可用於Cygwin或mingw。
7
你可能會感興趣的DWARF庫從pydevtools:
>>> from devtools.dwarf import DWARF
>>> dwarf = DWARF('test/test')
>>> dwarf.get_loc_by_addr(0x8048475)
('/home/emilmont/Workspace/dbg/test/main.c', 36, 0)
>>> print dwarf
.debug_info
COMPILE_UNIT<header overall offset = 0>
<0><11> compile_unit
producer: GNU C 4.4.3
language: C89
name: a/test.c
comp_dir: /home/emilmont/Workspace/dbg/test
low_pc: 0x080483e4
high_pc: 0x08048410
stmt_list: 0
[...]
相關問題
- 1. 更改elf調試信息中列出的源文件
- 2. Linux進程訪問自己的DWARF調試信息?
- 3. 調試一個ELF文件
- 4. 如何知道ELF對象文件中的調試信息類型?
- 5. 獲取有關ELF文件的更多信息
- 6. 用於調試信息的默認鏈接描述文件
- 7. 用於從MP3文件中提取音頻信息的Java庫
- 8. 調試文件格式混淆:ELF/BIN
- 9. 爲什麼沒有DWARF信息?
- 10. 讀取音頻文件信息php
- 11. 從文件中讀取信息
- 12. 讀取文件和相關信息
- 13. 從文件中讀取配置信息
- 14. 如何調試使用調試信息編譯的共享庫
- 15. 調試信息
- 16. 調試信息
- 17. 如何從本地文件vb.net讀取數據庫信息
- 18. 如何從IIS日誌中讀取調試信息
- 19. 需要幫助逐行讀取信息和從代碼中使用它的txt文件中讀取信息。
- 20. -sass-調試信息
- 21. GCC調試信息
- 22. DLL調試信息
- 23. 使用Gradle從現有的pom.xml文件中讀取信息?
- 24. 從AxHost獲取更多調試信息?
- 25. 從SD卡上的文件中讀取顯示文字信息
- 26. 在.Net中讀取文本和二進制信息的文件
- 27. 使用Ajax調用時獲取Django調試信息?
- 28. 正則表達式用於讀取文件.txt和返回信息到屏幕
- 29. 用於從各種文件格式提取信息的PHP庫/類
- 30. 嘗試從文本文件獲取信息並將信息拆分爲數組
投票關閉的工具REC。 – 2015-07-19 09:20:49