TODO
====

 * Support threads :-)
 * Support Windows: see PyDBG
 * Support ktrace (for FreeBSD and Darwin)
 * Support utrace: http://sourceware.org/systemtap/wiki/utrace
 * Remove gdb.py "except PtraceError, err: if err.errno == ESRCH" hack,
   process death detection should be done by PtraceProcess or  PtraceDebugger
 * readBytes()/writeBytes(): on ptrace_io() error, use default implementation
 * use from ctypes.utils import string_at?
 * Backtrace symbols:

   * Use GNU BFD?
   * Use elfsh?
   * Use backtrace()/backtrace_symbols() from libc? NO: only works on current process
   * See addr2line program
   * See dl_iterate_phdr() function of libdl

 * Use PTRACE_O_TRACESYSGOOD?
 * Use Intel hardware breakpoints
 * Support Linux 2.4 and test on other version than 2.6.20 and 2.6.22
 * 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

 * disassembler

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

