Python で実行される行を trace で表示する ― 2023年01月30日 12時05分13秒
trace モジュールがあり、いくつかの種類がある。
% python3 -m trace tracer.py
usage: trace.py [-h] [--version] [-c] [-t] [-l] [-T] [-r | -R] [-f FILE]
[-C COVERDIR] [-m] [-s] [-g] [--ignore-module IGNORE_MODULE]
[--ignore-dir IGNORE_DIR] [--module]
[progname] ...
trace.py: error: must specify one of --trace, --count, --report, --listfuncs, or --trackcalls
小さいプログラムで実験。
% cat tracer1.py
a = "A"
b = 1
print(a, b)
% python3 -m trace --trace tracer1.py
--- modulename: tracer1, funcname:
import 文はそのまま import だけの表示のようだ。
% cat tracer2.py
from typing import List
% python3 -m trace --trace tracer2.py
--- modulename: tracer2, funcname:
関数の呼び出しは表示される物とされない物があるようだ。
% cat tracer3.py
b = str(1)
print(b)
(venv39-amd64) % python3 -m trace --trace tracer3.py
--- modulename: tracer3, funcname:
os.getenv は関数の実行内容も表示される。
% cat tracer5.py
import os
os.getenv("PYTHONPATH")
% python3 -m trace --trace tracer5.py
--- modulename: tracer5, funcname:
最後に例外を trace。
% cat tracer4.py
raise Exception("Test")
% python3 -m trace --trace tracer4.py
--- modulename: tracer4, funcname: <module>
tracer4.py(1): raise Exception("Test")
Traceback (most recent call last):
File "/usr/local/lib/python3.9/runpy.py", line 197, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/local/lib/python3.9/runpy.py", line 87, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.9/trace.py", line 740, in
コメント
トラックバック
このエントリのトラックバックURL: http://uyota.asablo.jp/blog/2023/01/30/9559284/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。