How can I make Perl and Python print each line of the program being executed?

前端 未结 3 943
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-07 22:55

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条回答
  • 2020-12-07 23:23

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

    0 讨论(0)
  • 2020-12-07 23:26

    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.

    0 讨论(0)
  • 2020-12-07 23:34

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

    0 讨论(0)
提交回复
热议问题