Package vtrace
[hide private]
[frames] | no frames]

Package vtrace

source code


Vtrace Debugger Framework

Vtrace is a *mostly* native python debugging framework which
can be used to quickly write programatic debuggers and research
tools.

I'm not known for writting great docs...  but the code should
be pretty straight forward...

This has been in use for many years privately, but is nowhere
*near* free of bugs...  idiosyncracies abound.

==== Werd =====================================================

Blah blah blah... many more docs to come.

Brought to you by kenshoto.  e-mail invisigoth.

Greetz:
    h1kari - eeeeeooorrrmmm  CHKCHKCHKCHKCHKCHKCHK
    Ghetto - wizoo... to the tizoot.
    atlas - *whew* finally...  no more teasing...
    beatle/dnm - come out and play yo!
    The Kenshoto Gophers.
    Blackhats Everywhere.

Submodules [hide private]

Classes [hide private]
  PlatformException
A universal way to represent a failure in the platform layer for this tracer.
  AccessViolation
An exception which is raised on bad-touch to memory
  Trace
The main tracer object.
  TraceGroup
Encapsulate several traces, run them, and continue to handle their event notifications.
  VtraceExpressionLocals
A class which serves as the namespace dictionary during the evaluation of an expression on a tracer.
Functions [hide private]
 
reqTargOpt(opts, targ, opt, valstr='<value>') source code
 
getTrace(target=None, **kwargs)
Return a tracer object appropriate for this platform.
source code
 
interact(pid=0, server=None, trace=None)
Just a cute and dirty way to get a tracer attached to a pid and get a python interpreter instance out of it.
source code
 
getEmu(trace, arch=envi.ARCH_DEFAULT)
See comment for emulator from trace (in envitools); does not set any registers or mem.
source code
Function Details [hide private]

getTrace(target=None, **kwargs)

source code 

Return a tracer object appropriate for this platform.
This is the function you will use to get a tracer object
with the appropriate ancestry for your host.

ex. mytrace = vtrace.getTrace()


NOTE: Use the release() method on the tracer once debugging
      is complete.  This releases the tracer thread and allows
      garbage collection to function correctly.

Some specialized tracers may be constructed by specifying the "target"
name from one of the following list.  Additionally, each "specialized"
tracer may require additional kwargs (which are listed).


Examples:
    # A tracer for *this* os
    t = vtrace.getTrace()

    # A tracer for the gdbstub debugging a vmware 32bit hypervisor
    t = vtrace.getTrace(target='vmware32', host='localhost', port=8832)

Targets:

Alpha Targets:

vmware32    -
    host=<host>     ( probably 'localhost' )
    port=<port>     ( probably 8832 )

getEmu(trace, arch=envi.ARCH_DEFAULT)

source code 

See comment for emulator from trace (in envitools); does not set any registers or mem.

TODO: this really belongs in envitools, or somewhere else, but putting it in envitools causes a circular import problem due to the TraceEmulator.