7 Star 0 Fork 9

openEuler/elfin-parser

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Libelfin 是一个从头开始的 C++11 库,用于读取 ELF 二进制文件和 DWARFv4 调试信息。

快速入门

make 和 (可选) make install 。您需要 GCC 4.7 或更高版本。

另一种方式:

bash build.sh 。您需要 cmake 3.12 或更高版本。

特性

  • 原生 C++11 代码和接口,从头开始设计,可与 C++11 功能良好交互,从基于范围的 for 循环到将语义移动到枚举类。
  • Libelfin 完全实现了对调试信息条目 (DIE) 的解析,这是 DWARF 格式使用的核心数据结构,以及大多数 DWARFv4 表。
  • 支持除位置列表和宏之外的所有 DWARFv4 DIE 值类型。
  • 几乎完整的 DWARFv4 表达式和位置描述的计算器。
  • DWARFv4 行表的完整解释器。
  • 用于轻松自然地遍历编译单元、类型单元、DIE 树和 DIE 属性列表的迭代器。
  • 每个枚举值都可以打印得很漂亮。
  • 大量类型安全的 DIE 属性提取器。
  • 支持 DWARF5,添加信号处理程序和添加函数,将函数名转换为字符串。

非特性

Libelfin 实现了 DWARF 和 ELF 的句法层,但不是语义层。解释存储在 DWARF DIE 树中的信息仍然需要对 DWARF 有大量的了解,但 libelfin 会为您理解字节。

使用 libelfin

要针对 libdwarf++ ,请使用,例如

g++ -std=c++11 a.cc $(pkg-config --cflags --libs libdwarf++)

要使用 libelfin 的本地版本,请设置 PKG_CONFIG_PATH .例如

export PKG_CONFIG_PATH=$PWD/elf:$PWD/dwarf

其中 examples/ 提供了各种示例程序。

另一种方式:

LD_PRELOAD=$PWD/install/lib64/libstdc++.so workload

状态

Libelfin是一个好的开始。它还没有准备好生产,而且 DWARF 规范的许多部分还没有实现,但它足够完整,对很多事情都很有用,并且比我尝试过的所有其他调试信息库使用起来都更愉快。

感谢

感谢 Austin T. Clements 为软件的基本功能做出了贡献

The MIT License (MIT) Copyright (c) 2013 Austin T. Clements Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

elfin-parser is a from-scratch C++11 library for reading ELF binaries and DWARFv4 debug information, 展开 收起
README
MIT
取消

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openeuler/elfin-parser.git
git@gitee.com:openeuler/elfin-parser.git
openeuler
elfin-parser
elfin-parser
master

搜索帮助