Как я могу заставить Perl и Python печатать каждую строку выполняемой программы? - PullRequest
40 голосов
/ 20 мая 2010

Я знаю, что bash -x script.sh будет выполнять печать скрипта каждую строку перед фактическим выполнением. Как заставить интерпретаторы Perl и Python делать то же самое?

Ответы [ 3 ]

45 голосов
/ 20 мая 2010

Devel :: Trace - это аналог Perl, модуль трассировки - это Python.

5 голосов
/ 17 сентября 2015

Devel::DumpTrace был выпущен в 2011 году и имеет больше функций, чем Devel::Trace, таких как оценка значений переменных в выводе трассировки.

4 голосов

python -m trace -t main.py

Тестовая программа:

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

Выход:

 --- 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)

Протестировано на Ubuntu 16.10, Python 2.7.12.

...