TODO
====

Main tasks
----------

* Fix strace.py --socketcall: SyscallState.enter() calls ignore_callback
  before socketcall are proceed
* Support other backends:

   - GDB MI: http://code.google.com/p/pygdb/
   - ktrace: (FreeBSD and Darwin): would help Darwin support
   - utrace (new Linux debugger): http://sourceware.org/systemtap/wiki/utrace
   - vtrace?
   - PyDBG: works on Windows

* Backtrace symbols:

  - GNU BFD?
  - elfsh?
  - addr2line program?
  - See dl_iterate_phdr() function of libdl

* Support other disassemblers (than distorm), and so both Intel syntax (Intel and AT&T)

  - BFD
  - http://www.ragestorm.net/distorm/
  - libasm (ERESI)
  - libdisasm (bastard)
  - http://www.woodmann.com/collaborative/tools/index.php/Category:X86_Disassembler_Libraries

* Support threads: other backends (than python-ptrace) already support threads


Minor tasks
-----------

* Fix gdb.py "step" command on a jump. Example where step will never stop::

   (gdb) where
   ASM 0xb7e3b917: JMP 0xb7e3b8c4 (eb ab)
   ASM 0xb7e3b919: LEA ESI, [ESI+0x0] (8db426 00000000)

* Remove gdb.py "except PtraceError, err: if err.errno == ESRCH" hack,
  process death detection should be done by PtraceProcess or PtraceDebugger
* Use Intel hardware breakpoints: set vtrace source code
* Support Darwin:

  - ktrace? need to recompile Darwin kernel with KTRACE option
  - get registers: http://unixjunkie.blogspot.com/2006/01/darwin-ptrace-and-registers.html
  - PT_DENY_ATTACH: http://steike.com/code/debugging-itunes-with-gdb/
  - PT_DENY_ATTACH: http://landonf.bikemonkey.org/code/macosx/ptrace_deny_attach.20041010201303.11809.mojo.html

