1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
|
.. _changelog:
Changelog
=========
python-ptrace 0.9.9 (2024-03-13)
--------------------------------
* Fix arguments of pipe/pipe2 system calls for proper display in call format.
Patch by José Pereira.
* Introduced support for three-digit minor device IDs in ``PROC_MAP_REGEX``.
Patch by fab1ano.
* Added RISCV (riscv32/riscv64) support.
Patch by Andreas Schwab and vimer/yuzibo.
* Fix stray exception raised by child processes terminating with exit code 255.
Patch by Duane Voth/duanev.
* Removed usage of the ``imp`` module.
Collaboration between Mario Haustein/hamarituc and Stephen Kitt/skitt.
python-ptrace 0.9.8 (2021-03-17)
--------------------------------
* Added Arm 64bit (AArch64) support.
* Implemented ``PTRACE_GETREGSET`` and ``PTRACE_SETREGSET`` required on AArch64
and available on Linux.
* Issue #66: Fix ``SIGTRAP|0x80`` or ``SIGTRAP`` wait in syscall_state.exit
(``PTRACE_O_TRACESYSGOOD``).
* The development branch ``master`` was renamed to ``main``.
See https://sfconservancy.org/news/2020/jun/23/gitbranchname/ for the
rationale.
python-ptrace 0.9.7 (2020-08-10)
--------------------------------
* Add missing module to install directives
* Update README.rst
* Project back in beta and maintenance
python-ptrace 0.9.6 (2020-08-10)
--------------------------------
* Remove RUNNING_WINDOWS constant: python-ptrace doesn't not support Windows.
* Drop Python 2.7 support. six dependency is no longer needed.
* Add close_fds and pass_fds to createChild() function.
Patch by Jean-Baptiste Skutnik.
* Enhance strace.py output for open flags and open optional parameters.
Patch by Jean-Baptiste Skutnik.
* Add support for PowerPC 64-bit (ppc64).
Patch by Jean-Baptiste Skutnik.
python-ptrace 0.9.5 (2020-04-13)
--------------------------------
* Fix readProcessMappings() for device id on 3 digits. Patch by Cat Stevens.
* Drop Python 2 support.
python-ptrace 0.9.4 (2019-07-30)
--------------------------------
* Issue #36: Fix detaching from process object created without is_attached=True
* The project now requires the six module.
* Project moved to: https://github.com/vstinner/python-ptrace
python-ptrace 0.9.3 (2017-09-19)
--------------------------------
* Issue #42: Fix test_strace.py: tolerate the openat() syscall.
python-ptrace 0.9.2 (2017-02-12)
--------------------------------
* Issue #35: Fix strace.py when tracing multiple processes: use the correct
process. Fix suggested by Daniel Trnka.
python-ptrace 0.9.1 (2016-10-12)
--------------------------------
* Added tracing of processes created with the clone syscall (commonly known as
threads).
* gdb.py: add ``gcore`` command, dump the process memory.
* Allow command names without absolute path.
* Fix ptrace binding: clear errno before calling ptrace().
* Fix PtraceSyscall.exit() for unknown error code
* Project moved to GitHub: https://github.com/haypo/python-ptrace
* Remove the ``ptrace.ctypes_errno`` module: use directly
the ``ctypes.get_errno()`` function
* Remove the ``ptrace.ctypes_errno`` module: use directly
``ctypes.c_int8``, ``ctypes.c_uint32``, ... types
python-ptrace 0.9 (2016-04-23)
------------------------------
* Add all Linux syscall prototypes
* Add error symbols (e.g. ENOENT), in addition to error text, for strace
* Fix open mode so O_RDONLY shows if it's the only file access mode
* Python 3: fix formatting of string syscall arguments (ex: filenames), decode
bytes from the locale encoding
* Issue #17: syscall parser now supports O_CLOEXEC and SOCK_CLOEXEC, fix unit
tests on Python 3.4 and newer
python-ptrace 0.8.1 (2014-10-30)
--------------------------------
* Update MANIFEST.in to include all files
* Fix to support Python 3.5
python-ptrace 0.8 (2014-10-05)
------------------------------
* Issue #9: Rewrite waitProcessEvent() and waitSignals() methods of
PtraceProcess to not call waitpid() with pid=-1. There is a race condition
with waitpid(-1) and fork, the status of the child process may be returned
before the debugger is noticed of the creation of the new child process.
* Issue #10: Fix PtraceProcess.readBytes() for processes not created by the
debugger (ex: fork) if the kernel blocks access to private mappings of
/proc/pid/mem. Fallback to PTRACE_PEEKTEXT which is slower but a debugger
tracing the process is always allowed to use it.
python-ptrace 0.7 (2013-03-05)
------------------------------
* Experimental support of Python 3.3 in the same code base
* Drop support of Python 2.5
* Remove the ptrace.compatibility module
* Fix Process.readStruct() and Process.readArray() on x86_64
* Experimental support of ARM architecture (Linux EAPI),
strace.py has been tested on Raspberry Pi (armv6l)
python-ptrace 0.6.6 (2013-12-16)
--------------------------------
* Fix os_tools.RUNNING_LINUX for Python 2.x compiled on Linux kernel 3.x
* Support FreeBSD on x86_64
* Add missing prototype of the unlinkat() system call. Patch written by
Matthew Fernandez.
python-ptrace 0.6.5 (2013-06-06)
--------------------------------
* syscall: fix parsing socketcall on Linux x86
* syscall: fix prototype of socket()
python-ptrace 0.6.4 (2012-02-26)
--------------------------------
* Convert all classes to new-style classes, patch written by teythoon
* Fix compilation on Apple, patch written by Anthony Gelibert
* Support GNU/kFreeBSD, patch written by Jakub Wilk
* Support sockaddr_in6 (IPv6 address)
python-ptrace 0.6.3 (2011-02-16)
--------------------------------
* Support distrom3
* Support Python 3
* Rename strace.py option --socketcall to --socket, and fix this option for
FreeBSD and Linux/64 bits
* Add MANIFEST.in: include all files in source distribution (tests, cptrace
module, ...)
python-ptrace 0.6.2 (2009-11-09)
--------------------------------
* Fix 64 bits sub registers (set mask for eax, ebx, ecx, edx)
python-ptrace 0.6.1 (2009-11-07)
--------------------------------
* Create follow, showfollow, resetfollow, xray commands in gdb.py. Patch
written by Dimitris Glynos
* Project website moved to: ``http://bitbucket.org/haypo/python-ptrace/``
* Replace types (u)intXX_t by c_(u)intXX
* Create MemoryMapping.search() method and MemoryMapping now keeps a weak
reference to the process
python-ptrace 0.6 (2009-02-13)
------------------------------
User visible changes:
* python-ptrace now depends on Python 2.5
* Invalid memory access: add fault address in the name
* Update Python 3.0 conversion patch
* Create -i (--show-ip) option to strace.py: show instruction pointer
* Add a new example (itrace.py) written by Mark Seaborn and based
on strace.py
API changes:
* PtraceSyscall: store the instruction pointer at syscall enter (if the
option instr_pointer=True, disabled by default)
* Remove PROC_DIRNAME and procFilename() from ptrace.linux_proc
Bugfixes:
* Fix locateProgram() for relative path
* Fix interpretation of memory fault on MOSVW instruction (source is ESI and
destination is EDI, and not the inverse!)
python-ptrace 0.5 (2008-09-13)
------------------------------
Visible changes:
* Write an example (the most simple debugger) and begin to document the code
* gdb.py: create "dbginfo" command
* Parse socket syscalls on FreeBSD
* On invalid memory access (SIGSEGV), eval the dereference expression to get
the fault address on OS without siginfo (e.g. FreeBSD)
* Fixes to get minimal Windows support: fix imports, fix locateProgram()
Other changes:
* Break the API:
- Rename PtraceDebugger.traceSysgood() to PtraceDebugger.enableSysgood()
- Rename PtraceDebugger.trace_sysgood to PtraceDebugger.use_sysgood
- Remove PtraceProcess.readCode()
* Create createChild() function which close all files except stdin,
stdout and stderr
* On FreeBSD, on process exit recalls waitpid(pid) to avoid zombi process
python-ptrace 0.4.2 (2008-08-28)
--------------------------------
* BUGFIX: Fix typo in gdb.py (commands => command_str), it wasn't possible to
write more than one command...
* BUGFIX: Fix typo in SignalInfo class (remove "self."). When a process
received a signal SIGCHLD (because of a fork), the debugger exited because
of this bug.
* BUGFIX: Debugger._wait() return abnormal process exit as a normal event,
the event is not raised as an exception
* PtraceSignal: don't clear preformatted arguments (e.g. arguments of execve)
python-ptrace 0.4.1 (2008-08-23)
--------------------------------
* The project has a new dedicated website: http://python-ptrace.hachoir.org/
* Create cptrace: optional Python binding of ptrace written in C (faster
than ptrace, the Python binding written in Python with ctypes)
* Add name attribute to SignalInfo classes
* Fixes to help Python 3.0 compatibility: don't use sys.exc_clear()
(was useless) in writeBacktrace()
* ProcessState: create utime, stime, starttime attributes
python-ptrace 0.4.0 (2008-08-19)
--------------------------------
Visible changes:
* Rename the project to "python-ptrace" (old name was "Ptrace)
* strace.py: create --ignore-regex option
* PtraceSignal: support SIGBUS, display the related registers and
the instruction
* Support execve() syscall tracing
Developer changes:
* New API is incompatible with 0.3.2
* PtraceProcess.waitProcessEvent() accepts optional blocking=False argument
* PtraceProcess.getreg()/setreg() are able to read/write i386 and x86-64
"sub-registers" like al or bx
* Remove iterProc() function, replaced by openProc() with explicit
call to .close() to make sure that files are closed
* Create searchProcessesByName()
* Replace CPU_PPC constant by CPU_POWERPC and create CPU_PPC32 and CPU_PPC64
* Create MemoryMapping object, used by readMappings() and findStack() methods
of PtraceProcess
* Always define all PtraceProcess methods but raise an error if the function
is not implemented
|