Python Forum
Debug and trace in python - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Debug and trace in python (/thread-3746.html)



Debug and trace in python - quocchi22101262 - Jun-20-2017

I have to try use command: python -m trace --listfuncs --trackcalls main.py I write a simple code to test: file testdebug:
from testdebug1 import * 
hello()
file testdebug1:
from testdebug2 import *
def hello():
   print "hello"
   hello1()
file testdebug2:
def hello1():
   print "hello1"
And after i use command: python -m trace --listfuncs --trackcalls testdebug I have result:

hello
hello1

calling relationships:

*** /usr/lib/python2.7/trace.py ***
   trace.Trace.runctx -> trace._unsettrace
 --> testdebug
   trace.Trace.runctx -> testdebug.<module>

*** testdebug ***
 --> testdebug1.py
   testdebug.<module> -> testdebug1.<module>
   testdebug.<module> -> testdebug1.hello

*** testdebug1.py ***
 --> testdebug2.py
   testdebug1.<module> -> testdebug2.<module>
   testdebug1.hello -> testdebug2.hello1
Very easy, if i read this result, me will known testdebug caller testdebug1.hello and testdebug1.hello -> testdebug2.hello1. Problem of me is when me trace binwalk(open source). I see part of follow code:

*** /usr/local/lib/python2.7/dist-packages/binwalk/core/display.py ***
 --> /usr/lib/python2.7/csv.py
   display.<module> -> csv.<module>
   display.<module> -> display.Display
   display.Display.__init__ -> display.Display._configure_formatting
   display.Display._configure_formatting -> display.Display.format_strings
   display.Display._fprint -> display.Display._format_line
   display.Display.footer -> display.Display._fprint
 --> /usr/local/lib/python2.7/dist-packages/binwalk/core/compat.py
   display.Display.header -> compat.has_key
   display.Display.header -> display.Display._fprint
   display.Display.result -> display.Display._fprint
I found display.py and it firstly appear at line above code. I really don't known where display.py is caller. When i keep looking, I see follow code:

*** /usr/local/lib/python2.7/dist-packages/binwalk/core/module.py ***
--> /usr/local/lib/python2.7/dist-packages/binwalk/core/display.py
   module.Module.footer -> display.Display.footer
   module.Module.header -> display.Display.add_custom_header
   module.Module.header -> display.Display.format_strings
   module.Module.header -> display.Display.header
   module.Module.main -> display.Display.format_strings
   module.Module.main -> module.Module._plugins_post_scan
   module.Module.main -> module.Module._plugins_pre_scan
   module.Module.main -> module.Module.init
   module.Module.main -> module.Module.reset_dependencies
   module.Module.main -> module.Module.run
May it is caller from /binwalk/core/module.py. But why first, What is caller it?