12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # This is a helper for the win32trace module
- # If imported from a normal Python program, it sets up sys.stdout and sys.stderr
- # so output goes to the collector.
- # If run from the command line, it creates a collector loop.
- # Eg:
- # C:>start win32traceutil.py (or python.exe win32traceutil.py)
- # will start a process with a (pretty much) blank screen.
- #
- # then, switch to a DOS prompt, and type:
- # C:>python.exe
- # Python 1.4 etc...
- # >>> import win32traceutil
- # Redirecting output to win32trace remote collector
- # >>> print "Hello"
- # >>>
- # And the output will appear in the first collector process.
- # Note - the client or the collector can be started first.
- # There is a 0x20000 byte buffer. If this gets full, it is reset, and new
- # output appended from the start.
- import win32trace
- def RunAsCollector():
- import sys
- try:
- import win32api
- win32api.SetConsoleTitle("Python Trace Collector")
- except:
- pass # Oh well!
- win32trace.InitRead()
- print("Collecting Python Trace Output...")
- try:
- while 1:
- # a short timeout means ctrl+c works next time we wake...
- sys.stdout.write(win32trace.blockingread(500))
- except KeyboardInterrupt:
- print("Ctrl+C")
- def SetupForPrint():
- win32trace.InitWrite()
- try: # Under certain servers, sys.stdout may be invalid.
- print("Redirecting output to win32trace remote collector")
- except:
- pass
- win32trace.setprint() # this works in an rexec environment.
- if __name__=='__main__':
- RunAsCollector()
- else:
- SetupForPrint()
|