Features:
- **Interactive Mode**: Introducing `PipeManager.interactive` mode!
- **Enhanced Performance**: `PipeManager` has been updated for significantly improved performance. New options are available; refer to the updated documentation for more details.
- **Legacy FP Support**: Added support for legacy x86 floating-point registers (mmx/st).
- **Enhanced AVX Register Support**: Improved support for AVX x86 registers.
- **Full i386 Support (Alpha)**: Full support for i386 over amd64 introduced as an alpha feature.
- **Native i386 Support (Alpha)**: Introduced native i386 support as an alpha feature.
- **Event Notification System**: Alerts users when the process stops during specific operations.
- **Automatic Process Termination**: The debuggee is now automatically terminated when the libdebug script ends. This behavior can be modified using the `kill_on_exit` option in the debugger.
- **String Representations**: Added string representation for `Debugger`, `ThreadContext`, and `Registers` objects.
- **Enhanced Pretty Printing**: New pretty prints introduced and improvements made to existing ones.
- `d.print_maps` is deprecated and will be removed in future releases. Use `d.pprint_maps` instead. Moreover, it has a more colorful output.
- `t.pprint_regs` is now available.
- Improved `d.pprint_syscalls`, which now includes the thread originating the syscall and more.
- `t.pprint_backtrace` is now available.
- **Search in Memory**: New memory search functionality: `t.memory.find()`.
- **Filtering**: New filters for memory maps (`d.maps.filter()`) and register content (`t.regs.filter()`).
- **Symbols access**: Access and filter executable symbols, including libraries, with `d.symbols` and `d.symbols.filter()`.
- **Syscall and Signal Handling**: Enhanced handling for all syscalls and catching all signals with "*", "all", or "ALL".
- **Empty Callback**: Now you can create empty callbacks by setting `callback=True`.
- **Enhanced GDB support**
- `d.gdb` can now run non-blocking with `blocking=False`. Refer to the documentation for more details.
- `d.gdb` now automatically detects the terminal in most cases.
- Option to omit the breakpoint migration when using `d.gdb`.
- **More Registers**: Access to segment registers and CPU flags.
- **Pipe redirect**: You can now choose whether to redirect pipes when running the process using `d.run`.
Documentation:
- **Complete Rewrite**: The documentation has been completely revised and rewritten.
Bug Fixing
- **Debugging Symbols**: Improved logging and error handling for debuginfod symbols download system.
- **Watchpoint Handling**: `hit_on` for watchpoints now works correctly.
- **Stack Unwinding**: Enhanced error handling that avoids certain exceptions.
- **Memory and Attach Handling**: Resolved race conditions with `fast_memory=True` and `d.attach`.
- **Threaded Process Attach**: Improved attach functionality for multi-threaded processes.
- **Internal Debugger Conflicts**: Resolved dictionary conflicts in some edge cases.
- **Signal Management**: Improved RT signals management.
- **Terminal Compatibility**: Enhanced support of `d.gdb` on various terminals.
- **Path resolution**: Improved path resolution for the argv path passed to the debugger.
- **Detach and Kill**: Now you cannot kill a process after detaching from it.
- Many other fixes.
Others
- **IDE Improvements**: Typing fixes to enhance usability and IDE suggestions.
- **AARCH64 Support**: Upgraded from alpha to beta.
- **ASLR**: Enabled by default.
- **Symbol Level**: Default `sym_level` set to 5.
- **Custom Exceptions**: Introduced custom exception for attach operations without `ptrace_scope`.
- **Public Debugger Access**: Now accessible from `ThreadContext` (`d.debugger`).
- **Base Alias**: `MemoryMap.start` now has an alias called `base`
Test:
- **New Test Suite**: More consistent across different architectures.
- **Python 3.13 Support**: Added in CI.
**Full Changelog**: https://github.com/libdebug/libdebug/compare/0.6.0...0.7.0