Headcrab: August 2020 progress report
We are working towards creating a modular, composable, and modern debugger library for Rust, and this month there has been a lot of exciting progress thanks to our supporters and contributors.
We have extended core functionality, implementing important debugger features such as stack unwinding (which is necessary for displaying backtraces), reading of local variables, and disassembly view.
In total, this month there have been 20 pull requests:
- In #54, @bjorn3 has added an API function to disassemble the source code. This pull request also added a new
disassemble
command for therepl
example (the one you see in the demo above). - #61: @bjorn3 has implemented stack unwinding functions which can be used to get backtraces. Corresponding command (
backtrace
) has been also added to therepl
example. - @Stupremee has implemented Rust symbols demangling in #74.
- With #76 and #69, @DeltaManiac has started on implementing Headcrab functions for Windows.
- @DeltaManiac has also added a
help
command to the repl example in #91. - #41: @nbaksalyar has added memory writing functions for Linux and macOS, including the protected memory overwriting for Linux (using
ptrace(2)
). #75 added some more helper functions to read memory (e.g.,ReadMemory::read_slice
can be used for reading array values). - #84: @bjorn3 implemented reading of local variables (also expanding the command-line example app!).
- In #73, @JJendryka implemented watchpoints for Linux with the use of x86_64 debug registers.
- With #85, @fabiim has implemented a function to get a list of process threads on macOS, and #81 made the tests more robuts on Linux.
What’s next?
Here’s a glimpse of what we’ll be working on next month:
- Release version 0.2.0 on crates.io.
- Better documentation and fewer barriers for new contributors.
- More example apps and use cases.
- Continue implementing target platforms support (Windows and macOS).
- Breakpoints and signals.
- Thread-local variables.
We always need help, so if you’d like to join, we have a Zulip chat where we coordinate the development. You can help in a lot of ways: ideas, developer experience, design, documentation, and code. We also welcome first-time contributors and we would be happy to mentor you!
You can also support our work financially by contributing to our OpenCollective.
Governance
Last but not least, we are planning to move towards more open & transparent governance model for our community.
For now, we have been following the “Benevolent Dictator” governance model, when the person who starts the project takes decisions and coordinate efforts, and it is natural to see in the begging when it also helps to minimize bureaucracy at a smaller scale. However, as our community grows, we have a goal of transitioning to a board-driven, inclusive decision-making framework.
Contributors
This month’s contributors were:
- bjorn3
- DeltaManiac
- Fábio Botelho
- Jakub Jendryka
- Justus K
- Nikita Baksalyar
- Tobias Hunger
Project sponsors
This month, Khonsu Labs and Embark have joined us as sponsors. Thank you!
OpenCollective backers and GitHub sponsors:
- repi
- Max Filippov
- Giles Cope
- Anton Izmailov
- Sean Wilson
- Serhiy Martynenko
- Viktor Bakurin
- David Laban
- Daniil Ryzhkov
- Ivan Mir
- Jenan Wise
- Blitzerr
- Val Atamanchuk
Thank you for your support!
Financial transparency
We have spent €102 in July:
- €68 have been paid out to individual contributors (@bjorn3, @JJendryka).
- €34 were spent on the domain name registration fee (headcrab.rs).
At the end of this month, our total remaining balance is $284.
Newsletter
For future updates, please subscribe to the RSS feed or to our email newsletter: