我需要根据来自根文件的被调用函数来跟踪函数调用 它应该显示函数调用序列而不包括系统函数 解决这个问题的最佳方法是什么 到目前为止我尝试过的 使用AST在根页面上获取函数调用,然后打开所有导入文件并搜索函数定义并重复该过程 模块查找器已用于获取打开模块的路径,但它没有显示某些文件的路径,有些文件在缺少模块部分
有没有办法在执行或不执行脚本的情况下实现此目的 我试过pycallgraph,但是它以图像格式显示输出,它的json实现还没有完成,所以我把它排除了
请建议我解决这个问题,还有其他任何有助于实现此功能的模块
答案 0 :(得分:0)
您可以使用sys.settrace()设置trace函数。原则上,您可以在代码的每一行上使用它,但它也可以帮助您检查函数调用。请查看此链接以获取示例。 http://www.dalkescientific.com/writings/diary/archive/2005/04/20/tracing_python_code.html
答案 1 :(得分:0)
我不确定您要跟踪哪种函数或您追求什么指标,但对于 Python 代码,有一个内置实用程序 -- -m trace
。
例如min_exmp.py
:
def b(z):
if z > 0:
return b(z-1) + 2
else:
return 2
def x(a):
v = a + a + b(a)*2
print(v)
print(x(42))
我们可以这样运行:
python3 -m trace --listfuncs min_exmp.py
产生:
256
None
functions called:
filename: min_exmp.py, modulename: min_exmp, funcname: <module>
filename: min_exmp.py, modulename: min_exmp, funcname: b
filename: min_exmp.py, modulename: min_exmp, funcname: x
您可以在此处阅读更详细的信息:https://docs.python.org/3/library/trace.html