This week, I started my Hacktoberfest 2025 journey by contributing to pwndbg, a Python-based GDB extension for debugging and reverse engineering. I chose this project because it has an active community, a detailed contribution guide, and uses tools like pytest, isort, and black to maintain clean and consistent code.
After registering on Hacktoberfest, I forked the repository, cloned it locally, and created a new branch using git checkout -b issue-3270-robust-dprintf. Since I use macOS, I installed Determinate Nix to emulate a Linux-like environment. Once inside the shell, I installed dependencies with python -m pip install -e ., which set up the project for local development.
My assigned task, described in Issue #3243, was to implement an MVP dp command, similar to GDB’s dprintf. The goal was to print formatted output while debugging without modifying program state. I added a new file called dp.py that introduced support for a format string, a --tid option to display the thread ID, and a --depth option to show call-stack depth.
After writing the feature, I verified the code style using isort, black, and ruff. I then ran the unit tests with pytest -q tests/unit_tests -k "not test_readline_not_imported". All 46 tests passed successfully, with only 3 expected skips on macOS. This confirmed that my code worked properly and didn’t break existing functionality.
Finally, I committed my work using
git commit -m "feat(dp): add MVP dp command (basic formatting + --tid & --depth) (Fixes #3243)"
and pushed it with git push -u origin issue-3270-robust-dprintf --no-verify. The pull request was created, and my commit is available at 22477d1.
Through this contribution, I learned how large projects maintain high standards with automated linting, unit testing, and review workflows. I also gained practical experience using Nix on macOS and following open-source conventions like clear commit messages and linked issues. Overall, this was a rewarding first contribution, and I plan to continue improving the dp command by integrating it with GDB’s native dprintf in future work.
Top comments (0)