I know that bash -x script.sh will execute script printing each line before actual execution.
How to make Perl and Python interpreters do the same?
3 Answers
Devel::Trace is the Perl analogue, the trace module is Python's.
2 Comments
Vi.
For clarification:
perl -d:Trace program.pl and python -m trace -t program.py respectively.GuruM
@Vi.+1 for the command-line options for Devel::Trace. FWIW: For enabling perl debugging under apache mod_perl see the following link:perlmonks.org/?node_id=412121. Haven't tried it but it might help someone else.
python -m trace -t main.py
Test program:
main.py
from a import g
def f(i):
g(i)
for i in range(3):
f(i)
a.py
def g(i):
print i
Output:
--- modulename: main, funcname: <module>
main.py(1): from a import g
--- modulename: a, funcname: <module>
a.py(1): def g(i):
main.py(2): def f(i):
main.py(4): for i in range(3):
main.py(5): f(i)
--- modulename: main, funcname: f
main.py(3): g(i)
--- modulename: a, funcname: g
a.py(2): print i
0
main.py(4): for i in range(3):
main.py(5): f(i)
--- modulename: main, funcname: f
main.py(3): g(i)
--- modulename: a, funcname: g
a.py(2): print i
1
main.py(4): for i in range(3):
main.py(5): f(i)
--- modulename: main, funcname: f
main.py(3): g(i)
--- modulename: a, funcname: g
a.py(2): print i
2
main.py(4): for i in range(3):
--- modulename: trace, funcname: _unsettrace
trace.py(80): sys.settrace(None)
Tested on Ubuntu 16.10, Python 2.7.12.
3 Comments
Ciro Santilli OurBigBook.com
@duskwuff thanks for feedback. It saves a click and finding that you need
-t, and shows what you get on a minimal multi-file example.Dannie
It's better to have the answer in the question rather than a linked document if it's practical, not just for convenience, also to avoid link rot.
Devel::DumpTrace was released in 2011 and has more features than Devel::Trace, such as evaluating variable values in the trace output.