46

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 3

49

Devel::Trace is the Perl analogue, the trace module is Python's.

Sign up to request clarification or add additional context in comments.

2 Comments

For clarification: perl -d:Trace program.pl and python -m trace -t program.py respectively.
@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.
12

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

This seems redundant to the other answers to the question.
@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.
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.
8

Devel::DumpTrace was released in 2011 and has more features than Devel::Trace, such as evaluating variable values in the trace output.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.