Last active
December 25, 2015 03:48
-
-
Save maliubiao/6911901 to your computer and use it in GitHub Desktop.
stacktrace.py , usage: import trace, trace.starttrace("logfile") your cdoe to trace, trace.stoptrace()
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys | |
import os | |
from cStringIO import StringIO | |
from traceback import extract_stack | |
""" | |
stack sample: | |
default_headers /usr/lib/python2.7/site-packages/requests/utils.py 452 | |
__init__ /usr/lib/python2.7/site-packages/requests/sessions.py 176 | |
request /usr/lib/python2.7/site-packages/requests/api.py 43 | |
get /usr/lib/python2.7/site-packages/requests/api.py 55 | |
<module> test-trace.py 5 | |
default_user_agent /usr/lib/python2.7/site-packages/requests/utils.py 421 | |
default_headers /usr/lib/python2.7/site-packages/requests/utils.py 454 | |
__init__ /usr/lib/python2.7/site-packages/requests/sessions.py 176 | |
request /usr/lib/python2.7/site-packages/requests/api.py 43 | |
get /usr/lib/python2.7/site-packages/requests/api.py 55 | |
<module> test-trace.py 5 | |
python_implementation /usr/lib64/python2.7/platform.py 1447 | |
default_user_agent /usr/lib/python2.7/site-packages/requests/utils.py 423 | |
default_headers /usr/lib/python2.7/site-packages/requests/utils.py 454 | |
__init__ /usr/lib/python2.7/site-packages/requests/sessions.py 176 | |
request /usr/lib/python2.7/site-packages/requests/api.py 43 | |
get /usr/lib/python2.7/site-packages/requests/api.py 55 | |
<module> test-trace.py 5 | |
""" | |
datafile = None | |
memfile = StringIO() | |
def starttrace(path=None): | |
global datafile | |
if path: | |
datafile = path | |
else: | |
datafile = "trace.stacks" | |
def trace(frame, event, arg): | |
for sourcefile, line, func, code in reversed(extract_stack()[:-1]): | |
memfile.write(" ".join((func, sourcefile, str(line), "\n"))) | |
memfile.write("\n") | |
sys.settrace(trace) | |
def stoptrace(): | |
sys.settrace(None) | |
with open(datafile, "w+") as f: | |
f.write(memfile.getvalue()) | |
memfile.close() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment