diff options
author | Aldo Cortesi <aldo@corte.si> | 2016-06-11 22:22:02 +1200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-06-11 22:22:02 +1200 |
commit | 8489c01ac81479e48c2ff2c3ab308e07e3d2bacd (patch) | |
tree | 589a0bc2d7c4134ef77459275246836da9f9fe07 /netlib/debug.py | |
parent | 4831e3e0bcd6dc94c84df3dd224c354732bd3655 (diff) | |
parent | 53b2fd545b104051e0697c590cf7df5c37074170 (diff) | |
download | mitmproxy-8489c01ac81479e48c2ff2c3ab308e07e3d2bacd.tar.gz mitmproxy-8489c01ac81479e48c2ff2c3ab308e07e3d2bacd.tar.bz2 mitmproxy-8489c01ac81479e48c2ff2c3ab308e07e3d2bacd.zip |
Merge pull request #1241 from cortesi/debug
Debug
Diffstat (limited to 'netlib/debug.py')
-rw-r--r-- | netlib/debug.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/netlib/debug.py b/netlib/debug.py new file mode 100644 index 00000000..6f6b0460 --- /dev/null +++ b/netlib/debug.py @@ -0,0 +1,80 @@ +from __future__ import (absolute_import, print_function, division) + +import sys +import threading +import signal +import platform + +import psutil + +from netlib import version + +from OpenSSL import SSL + + +def sysinfo(): + data = [ + "Mitmproxy version: %s" % version.VERSION, + "Python version: %s" % platform.python_version(), + "Platform: %s" % platform.platform(), + "SSL version: %s" % SSL.SSLeay_version(SSL.SSLEAY_VERSION), + ] + d = platform.linux_distribution() + t = "Linux distro: %s %s %s" % d + if d[0]: # pragma: no-cover + data.append(t) + + d = platform.mac_ver() + t = "Mac version: %s %s %s" % d + if d[0]: # pragma: no-cover + data.append(t) + + d = platform.win32_ver() + t = "Windows version: %s %s %s %s" % d + if d[0]: # pragma: no-cover + data.append(t) + + return "\n".join(data) + + +def dump_info(sig, frm, file=sys.stdout): # pragma: no cover + p = psutil.Process() + + print("****************************************************", file=file) + print("Summary", file=file) + print("=======", file=file) + print("num threads: ", p.num_threads(), file=file) + if hasattr(p, "num_fds"): + print("num fds: ", p.num_fds(), file=file) + print("memory: ", p.memory_info(), file=file) + + print(file=file) + print("Threads", file=file) + print("=======", file=file) + bthreads = [] + for i in threading.enumerate(): + if hasattr(i, "_threadinfo"): + bthreads.append(i) + else: + print(i.name, file=file) + bthreads.sort(key=lambda x: x._thread_started) + for i in bthreads: + print(i._threadinfo(), file=file) + + print(file=file) + print("Files", file=file) + print("=====", file=file) + for i in p.open_files(): + print(i, file=file) + + print(file=file) + print("Connections", file=file) + print("===========", file=file) + for i in p.connections(): + print(i, file=file) + + print("****************************************************", file=file) + + +def register_info_dumper(): # pragma: no cover + signal.signal(signal.SIGUSR1, dump_info) |