對於以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文件的DWARF信息的基於GUI的調試工具
- 2. 從DWARF信息獲取調用約定
- 3. 對象文件不包含DWARF調試信息
- 4. 更改elf調試信息中列出的源文件
- 5. Linux進程訪問自己的DWARF調試信息?
- 6. 調試一個ELF文件
- 7. 從DOS MZ可執行文件讀取調試信息
- 8. 如何知道ELF對象文件中的調試信息類型?
- 9. 獲取有關ELF文件的更多信息
- 10. 用於調試信息的默認鏈接描述文件
- 11. 使用DWARF庫
- 12. 用於從MP3文件中提取音頻信息的Java庫
- 13. 調試文件格式混淆:ELF/BIN
- 14. 用於讀取音頻文件的庫
- 15. 爲什麼沒有DWARF信息?
- 16. 讀取音頻文件信息php
- 17. 如何從.xml文件讀取信息
- 18. 從文件中讀取信息
- 19. 從文件中讀取配置信息
- 20. 讀取文件和相關信息
- 21. 讀取文件,並從信息
- 22. 從輸出文件中讀取信息
- 23. 讀取信息
- 24. 如何調試使用調試信息編譯的共享庫
- 25. 調試,信息
- 26. 調試信息
- 27. 調試信息
- 28. C++從文件中讀取信息,建立從該信息
- 29. 如何在Windows庫存數據讀取文件信息表格
- 30. 如何從本地文件vb.net讀取數據庫信息
投票關閉的工具REC。 – 2015-07-19 09:20:49