Bất kỳ đề xuất nào cho thư viện đa nền tảng tốt để đọc thông tin gỡ lỗi tệp ELF theo định dạng DWARF? Tôi muốn đọc thông tin gỡ lỗi DWARF trong một chương trình Python.Thư viện để đọc tệp ELF Thông tin gỡ lỗi DWARF
Trả lời
Có một New Kids on the Block - pyelftools - một thư viện Python tinh khiết để phân tích các định dạng ELF và lùn. Hãy thử một lần.
Nó nhằm mục đích có tính năng hoàn chỉnh và hiện đang trong phát triển tích cực, vì vậy bất kỳ vấn đề cần được xử lý một cách nhanh chóng và nhiệt tình :-)
Khái niệm "thông tin gỡ lỗi ELF" không thực sự tồn tại: đặc tả ELF để lại nội dung của phần .debug cố tình không xác định.
Các định dạng gỡ lỗi phổ biến là STAB và DWARF. Thư viện để đọc DWARF là libdwarf.
Có, khá đúng. DWARF là những gì tôi quan tâm. –
Tôi đã cập nhật câu hỏi cho phù hợp. –
Là nền tảng đa nền tảng libdwarf, bạn có biết không? Trang này không nói, nhưng dường như có một hương vị tổng thể của Unix cho nó. –
Bạn có thể tìm thấy thông tin hữu ích ở đây:
Cảm ơn, tôi đã bỏ lỡ câu hỏi SO khác, tôi đoán vì tôi không tìm kiếm "DWARF". Tôi sẽ cập nhật tiêu đề của câu hỏi này. –
lựa chọn của bạn cho việc đọc các thông tin gỡ lỗi lùn là không may khá hạn chế.
Theo tôi biết chỉ có một thư viện mục đích chung để phân tích cú pháp thông tin gỡ lỗi DWARF và đó là libdwarf. Rất tiếc, không ai có thể viết các ràng buộc Python cho libdwarf (có thể bạn tự mình dùng nó và chia sẻ nó với mọi người khác :)) Bạn chắc chắn có thể truy cập các chức năng của thư viện bằng cách sử dụng ctypes hoặc Python C API.
Một giải pháp ít thanh lịch hơn, tuy nhiên, là sử dụng trình phân tích cú pháp DWARF hiện có và phân tích cú pháp thông tin văn bản mà nó xuất ra. Các tùy chọn của bạn cho điều này (trên Linux) là
objdump -W
readelf --debug-dump=[OPTIONS]
Tôi hiện đang sử dụng một dự án tự xây dựng và hỗ trợ thông tin gỡ lỗi DWARF rất đầy đủ tính năng. Bạn có thể chỉ cần sử dụng Python để thực thi lệnh trong shell và sau đó phân tích cú pháp thông tin mà bạn cần. Chắc chắn không phải là lý tưởng như một thư viện, nhưng nên làm các trick.
EDIT: Tôi nhận thấy trong một nhận xét trước đó bạn đã đề cập đến Windows. Cả hai chương trình này (objdump và readelf) là một phần của GNU-binutils, vì vậy chúng nên có sẵn với Cygwin hoặc mingw.
cũng có 'dwarfdump'. – hochl
Bạn có thể quan tâm đến các thư viện lùn từ 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
[...]
Thật tuyệt vời khi biết. Vài câu hỏi: 1) Nền tảng nào được hỗ trợ (Windows, Linux)? 2) Bạn có thể đặt nó trên [PyPI] (http://pypi.python.org/pypi) không? –
Đó là trên PyPI: http://pypi.python.org/pypi/BinTools/0.1.0 – emilmont
Tuyệt vời! Tài liệu không đề cập đến các nền tảng được hỗ trợ. Nó có hoạt động trên Windows không? –
- 1. Biểu tượng gỡ lỗi thư viện tĩnh
- 2. /usr/bin/ld: Lỗi Dwarf
- 3. Gỡ lỗi thư viện bằng Xcode
- 4. Lỗi ghi nhật ký để gỡ lỗi và gỡ lỗi, thông tin để stdout với log4j
- 5. Thông tin gỡ lỗi DLL của Windows?
- 6. iOS Binary Link với thư viện để gỡ lỗi chỉ
- 7. Đọc tệp .pch trong thư viện tĩnh
- 8. Cách gỡ lỗi tải thư viện được chia sẻ
- 9. Python: Cách sử dụng các tệp thông tin gỡ lỗi trong Visual Studio?
- 10. Lỗi ứng dụng .NET không có thông tin gỡ lỗi
- 11. Làm cách nào để gỡ lỗi thư viện JNI/C?
- 12. Cách gỡ lỗi một thư viện lớp trong Visual Studio
- 13. Dự án Thư viện Lớp tập tin không biên dịch thành .dll hoặc gỡ lỗi
- 14. Thư viện để đọc các tệp âm thanh
- 15. đọc thông tin về tệp âm thanh php
- 16. Gỡ lỗi các thư viện đã tháo rời với gdb
- 17. Tại sao một số thư viện java được biên dịch mà không cần thông tin gỡ lỗi
- 18. Thư viện để đọc/ghi tệp pbxproj/xcodeproj?
- 19. Nơi tìm thư viện java để đọc tệp vcard?
- 20. Có phụ thêm dữ liệu tùy ý vào một tệp ELF vi phạm thông số ELF không?
- 21. Lỗi không mong muốn khi tạo tệp thông tin gỡ lỗi GG.PDB "-"
- 22. Tệp ELF bằng tay
- 23. Làm thế nào để kiểm soát mức độ thông tin gỡ lỗi trong glib?
- 24. Sửa đổi tập tin elf
- 25. Đọc ELF tiêu đề trong C
- 26. Thư viện đọc Exif
- 27. Gỡ lỗi thông qua libstdC++
- 28. gỡ lỗi kết nối với urllib2 + httplib.debuglevel đôi khi không hiển thị thông tin gỡ lỗi
- 29. Cách trích xuất thông tin gỡ lỗi từ sự cố
- 30. Gỡ lỗi thiết bị iPad với thông tin nhỏ
Bỏ phiếu đóng cửa như công cụ rec. –