如何让Perl和Python打印正在执行的程序的每一行?

Vi.*_*Vi. 40 python debugging bash perl trace

我知道bash -x script.sh在实际执行之前会执行脚本打印每一行.如何使Perl和Python解释器做同样的事情?

msw*_*msw 46

Devel :: Trace是Perl模拟,跟踪模块是Python的.

  • 为了澄清:`perl -d:Trace program.pl`和`python -m trace -t program.py`. (21认同)
  • @ Vi.+ 1表示Devel :: Trace的命令行选项.FWIW:要在apache mod_perl下启用perl调试,请参阅以下链接:http://www.perlmonks.org/?node_id = 412121.没试过,但它可能会帮助别人. (2认同)

mob*_*mob 6

Devel::DumpTrace于2011年发布,具有更多功能Devel::Trace,例如评估跟踪输出中的变量值.


Cir*_*四事件 6

python -m trace -t main.py

测试程序:

main.py

from a import g
def f(i):
    g(i)
for i in range(3):
    f(i)
Run Code Online (Sandbox Code Playgroud)

py

def g(i):
    print i
Run Code Online (Sandbox Code Playgroud)

输出:

 --- 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)
Run Code Online (Sandbox Code Playgroud)

已在Ubuntu 16.10,Python 2.7.12上测试。