def getThreadStates(self): states = [] frames = getframes() for k, f in frames.items(): if f: states.append("Thread %s: file %s<%s>" % (k, f.f_code.co_filename, f.f_lineno)) return "\n".join(states)
def getThreadStackTrace(self, threadId): f = getframes().get(threadId) trace = [] while f != None: filename = f.f_code.co_filename lineno = f.f_lineno name = f.f_code.co_name line = linecache.getline(filename, lineno) trace.append('File "%s", line %s, in %s\n\t %s' % (filename, lineno, name, line.strip())) f = f.f_back trace.reverse() return "\n".join(trace)