#demangle #cpp #c-plus-plus #symbolicate

cplus_demangle

Rust对GNU libiberty的cplus_demangle的包装,用于解混淆C++符号

3个版本

0.1.2 2022年4月5日
0.1.1 2020年9月16日
0.1.0 2020年9月16日

#511 in 调试

MIT/Apache

7KB
86

cplus_demangle

cplus_demangle

crates.io docs.rs

此库将C++混淆的符号名称转换为可读字符串。它是对GNU libiberty的C函数 cplus_demangle 的安全Rust包装。我发现它比其他Rust原生实现快得多,也更稳健。

示例

假设您编译以下C++程序

namespace test {
  void myfn(int x) { }
}

在生成的二进制文件中,为 myfn 生成的符号是 _ZN4test4myfnEi。我们可以使用以下Rust代码将其转换回来

assert_eq!(cplus_demangle::demangle("_ZN4test4myfnEi").unwrap(), "test::myfn(int)");

lib.rs:

cplus_demangle

crates.io docs.rs

此库将C++混淆的符号名称转换为可读字符串。它是对GNU libiberty的C函数 cplus_demangle 的安全Rust包装。

示例

假设您编译以下C++程序

namespace test {
  void myfn(int x) { }
}

在生成的二进制文件中,为 myfn 生成的符号是 _ZN4test4myfnEi。我们可以使用以下Rust代码将其转换回来

assert_eq!(cplus_demangle::demangle("_ZN4test4myfnEi").unwrap(), "test::myfn(int)");

依赖项

~225KB