This release features LLDB support, improved performance, bug fixes and enhanced embedded systems experience. Pwndbg can now run on macOS (both Intel & Apple Silicon) and allows for debugging Mach-O binaries.
Thanks to everyone who made it happen, especially (for most commits) to @patryk4815, @mbrla0, @peace-maker, and @fidgetingbits!
Want to support us or buy us a coffee? See our Pwndbg sponsors page!
Also, want to split Pwndbg context displays with tmux? See jcfg's blog post!
Major changes
- New features
- Added LLDB support. Most of Pwndbg functionality was ported to a debugger-agnostic library (
aglib
) that supports both GDB and LLDB. See also "When to use GDB or LLDB" and GDB vs LLDB commands. - Added macOS and Mach-O support via LLDB (Intel & Apple Silicon)
- pwndbg-gdb also works on macOS, but only for remote debugging (e.g.,
target remote 0:1337
)
- pwndbg-gdb also works on macOS, but only for remote debugging (e.g.,
- Added support for text user interface (TUI) in GDB (set with
tui layout pwndbg
ortui layout pwndbg_code
) - Added context history. The displayed contexts are saved in history and can be re-seen with
contextprev
andcontextnext
commands
- Added LLDB support. Most of Pwndbg functionality was ported to a debugger-agnostic library (
- New commands added:
gdt <addr>
- dumps Global Descriptor Table entries from a given addressstrings
- search memory for readable strings, like with thestrings
CLI utilityjemalloc_heap
,jemalloc_extent_info
,jemalloc_find_extent
- inspect jemalloc heap allocator structureshijack-fd <fd> <newfile>
- modify the process file descriptorkallsyms
andklookup
- added Linux kernel debugging helpers for looking up symbol tablesprofiler {start,stop}
- added a profiler command to benchmark Pwndbg performance/bottlenecks
- Improvements
- Improved the experience with embedded systems debugging (better vmmap detection; improved
vmmap_add
andvmmap_load
commands) - The
ropgadget
command now dumps memory and finds gadgets in all executable regions context <section[s]>
now has--on|--off
toggle to temporarily disable sub-sectionsplist
now supports--offset
and--count
to limit the linked list elements to be printed- Added
vmmap -C <N> <filter>
command to display N pages before/after the filtered one - Speed up syntax highlighting via pygments and Pwndbg startup time
- Improved the experience with embedded systems debugging (better vmmap detection; improved
- Others
- Dropped Python 3.8 / Ubuntu 20.04 / Debian 11 support
- Lots and lots of bug fixes
Full changelog
The full changelog can be found here: 2024.08.29...2025.01.20
New Contributors
- @itaysnir made their first contribution in #2408
- @AadishJ made their first contribution in #2433
- @gfelber made their first contribution in #2431
- @MY7H404 made their first contribution in #2460
- @Polaris-Snowfall made their first contribution in #2466
- @jkub6 made their first contribution in #2482
- @giuseppelettieri made their first contribution in #2484
- @AndersFelde made their first contribution in #2478
- @kapiw04 made their first contribution in #2505
- @koalajoe23 made their first contribution in #2599
- @ksen-lin made their first contribution in #2595
- @JasonnnW3000 made their first contribution in #2660
- @beatweichsler made their first contribution in #2668
- @richyliu made their first contribution in #2670