gimli
ddbug
gimli | ddbug | |
---|---|---|
2 | 4 | |
795 | 116 | |
1.5% | 3.4% | |
7.9 | 3.9 | |
7 days ago | 21 days ago | |
Rust | Rust | |
Apache License 2.0 | 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
ddbug
-
clayout, translate C++ type into C type with the same memory layout.
clayout is developed on ddbug. THANKS FOR ddbug!
-
Looking for structure padding visualization?
ddbug - a cool new library/tool for parsing debug information - works great, but you have to build it from source
-
How to see memory layout of a struct
There's also https://github.com/gimli-rs/ddbug/ which may do better with rust's enum variants (I haven't checked recently).
-
How can I track the instantiation of generics?
One way is to disassemble the binary and see what's calling it. objdump -d can do this. Another tool that I wrote is ddbug, which I want to be useful for this type of problem but it's still a bit rough. However, after compiling swc with debuginfo, I can find this (after trimming out a lot of information):
What are some alternatives?
addr2line - A cross-platform `addr2line` clone written in Rust, using `gimli`
CodeLLDB - A native debugger extension for VSCode based on LLDB
honggfuzz - Security oriented software fuzzer. Supports evolutionary, feedback-driven fuzzing based on code coverage (SW and HW based)
vscode-lldb - A native debugger extension for VSCode based on LLDB [Moved to: https://github.com/vadimcn/codelldb]
jwtinfo - A command-line tool to get information about JWTs (Json Web Tokens)
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