gimli
stacktrace
gimli | stacktrace | |
---|---|---|
2 | 1 | |
795 | 396 | |
1.5% | 2.0% | |
7.9 | 7.2 | |
7 days ago | 6 days ago | |
Rust | C++ | |
Apache License 2.0 | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
gimli
-
60x speed-up of Linux “perf”
I haven't blogged about this yet, but we saw a 1000x fold speed-up doing several things around symbolication. The more optimal approach we found was to use the gimli crate[1] directly & carefully optimize it to read in the data structures for the executable(s) you are symbolicating upfront & then issuing in-process queries. They also have a drop-in replacement of addr2line that outperforms it (both in symbolication speed & memory usage).
[1] https://github.com/gimli-rs/gimli
-
Rust shenanigans: return type polymorphism
I remember my brain melted when I tried using gimli, and they used this trick: https://github.com/gimli-rs/gimli/blob/master/examples/dwarf-validate.rs#L121-L124
stacktrace
-
60x speed-up of Linux “perf”
I do know Boost.Stacktrace calls addr2line too. From the code(https://github.com/boostorg/stacktrace/blob/develop/include/...), it seems Boost.Stacktrace also shells out to addr2line for every address. But in practice, I found the overhead of boost::stacktrace::stacktrace() is not as horrendous as my crappy implementation, which calls addr2line, too.
What are some alternatives?
addr2line - A cross-platform `addr2line` clone written in Rust, using `gimli`
honggfuzz - Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)
jwtinfo - A command-line tool to get information about JWTs (Json Web Tokens)
gdrcopy - A fast GPU memory copy library based on NVIDIA GPUDirect RDMA technology
ddbug - Display debugging information
easyloggingpp - C++ logging library. It is extremely powerful, extendable, light-weight, fast performing, thread and type safe and consists of many built-in features. It provides ability to write logs in your own customized format. It also provide support for logging your classes, third-party libraries, STL and third-party containers etc.
AFLplusplus - The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
linux - Linux kernel source tree
cpptrace - Simple, portable, and self-contained stacktrace library for C++11 and newer