Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- Faulthandler Test Code
- Note: I think this only fails on Windows (faulthandler 2.0 built with MinGW from C::B suite), with Python 2.x
- """
- import os
- from time import strftime as date
- from random import choice
- import time
- import traceback
- import threading
- import sys
- global ThreadComplete
- ThreadComplete = False
- class FaultHandlerTestcaseThread(threading.Thread):
- def __init__(self):
- threading.Thread.__init__(self)
- print "** [FaultHandlerTestcaseThread] Watchdog thread started!"
- def run(self):
- """Run Worker Thread."""
- global ThreadComplete
- try:
- import faulthandler
- print "** [FaultHandlerTestcaseThread] Using Faulthandler for a better stack trace."
- #fh = open("croquette_stacktrace.txt", "w")
- faulthandler.dump_traceback(sys.stderr, True)
- #fh.close()
- except:
- print "** [FaultHandlerTestcaseThread] Can't load Faulthandler module, so falling back to traceback."
- print "** [FaultHandlerTestcaseThread] It's very likely that the output will not be very useful."
- print "** [FaultHandlerTestcaseThread] Regular traceback:"
- print "Stack:\n",str(traceback.print_stack())
- print "Exc:\n",str(traceback.print_exc())
- print "*************************************"
- sys.stdout.write("** stdout test (from thread)\n")
- sys.stderr.write("** stderr test (from thread)\n")
- # This is just to test thread checking, leave commented for general use
- time.sleep(15)
- print "** [FaultHandlerTestcaseThread] Main loop exited."
- ThreadComplete = True
- class LogWriter:
- def __init__(self, filename):
- self.logfile = file(filename, 'a')
- self.logfile.write("** Log Session Start - "+date("%Y-%m-%d %H:%M:%S")+" **\n")
- self.enabledate = False
- def write(self, text):
- if self.enabledate == True:
- if text.strip() != "":
- self.logfile.write("["+date("%Y-%m-%d %H:%M:%S")+"] "+text.rstrip()+"\n")
- else:
- self.logfile.write(text)
- self.logfile.flush()
- def close(self):
- self.logfile.write("** Log Session End - "+date("%Y-%m-%d %H:%M:%S")+" **\n")
- self.logfile.close()
- def fileno(self):
- return self.logfile.fileno()
- def start():
- """Displays the GUI and starts the GUI Loop"""
- global ThreadComplete
- # Set up the debug logging, if needed.
- LOGGING = 1
- if LOGGING == 1:
- global logout
- logout = LogWriter("applog.txt")
- oldstdout = sys.stdout
- sys.stdout = logout
- oldstderr = sys.stderr
- sys.stderr = logout
- FaultHandlerTHandle = FaultHandlerTestcaseThread()
- FaultHandlerTHandle.start()
- print "** Sleeping 10 seconds to let thread run."
- time.sleep(10)
- sys.stdout.write("** stdout test\n")
- sys.stderr.write("** stderr test\n")
- if ThreadComplete == False:
- print "** Waiting until thread finishes."
- while ThreadComplete == False:
- time.sleep(1)
- if LOGGING == 1:
- logout.close()
- return
- if __name__ == "__main__":
- start()
Advertisement
Add Comment
Please, Sign In to add comment