在 GitHub 上为我加星

使用 pyftrace
跟踪你的 Python 代码.

pyftrace 是一个 开源、轻量级的 Python 函数跟踪工具
使你能够快速进行代码分析和调试。

安装 #

只需执行:

$ pip install pyftrace

基础跟踪 #

示例代码:

foobar.py


  1 def foo():
  2     bar()
  3     return 10
  4
  5 def bar():
  6     return 20
  7
  8 foo()
      

只需一行命令,即可快速查看函数调用与返回。

$ pyftrace foobar.py Running script: examples/foobar.py Called foo from line 9 Called bar from line 2 Returning bar-> 20 Called bar from line 3 Returning bar-> 20 Returning foo-> 10

内置函数 & 路径跟踪 #

pyftrace 支持外部库函数以及内置函数的跟踪。


builtins.py


  1 import os
  2
  3 def foo():
  4     print(os.path.basename(__file__))
  5
  6 foo()
      

你将获得如下格式的输出:

$ pyftrace --verbose --path builtins.py Running script: builtins.py Called foo@/workspace/builtins.py:3 from /workspace/builtins.py:5 Called basename@/usr/lib/python3.8/posixpath.py:140 from /workspace/builtins.py:4 Called fspath from /usr/lib/python3.8/posixpath.py:142 Returning fspath Called _get_sep@/usr/lib/python3.8/posixpath.py:41 from /usr/lib/python3.8/posixpath.py:143 Called isinstance from /usr/lib/python3.8/posixpath.py:42 Returning isinstance Returning _get_sep-> / @ /usr/lib/python3.8/posixpath.py Called rfind from /usr/lib/python3.8/posixpath.py:144 Returning rfind Returning basename-> builtins.py @ /usr/lib/python3.8/posixpath.py Called print from /workspace/builtins.py:4 builtins.py Returning print Returning foo-> None @ /workspace/builtins.py

执行报告 #

你还可以查看每个函数的调用次数或执行时长。


fibonacci.py


  1 def fibonacci(n):
  2     if n <= 1:
  3         return n
  4     else:
  5         return fibonacci(n-1) + fibonacci(n-2)
  6
  7 result = fibonacci(5)
      
$ pyftrace --report fibonacci.py Running script: fibonacci.py Function Name | Total Execution Time | Call Count --------------------------------------------------------- fibonacci | 0.000332 seconds | 15

TUI 模式 #

pyftrace 还提供了终端用户界面 (TUI) 模式。
让你可以更直观地分析大型、复杂的代码。

TUI mode

工具对比 #

除了 pyftrace 之外,还有其他出色的函数跟踪工具(包括 Python 内置的 Traceback)。
但是 pyftrace 也有它独特的优势:


pyftrace Traceback py-spy viztracer
实时跟踪 O X O O
TUI 模式 O X X X
内置函数跟踪 O O O O
执行报告
(调用次数、时长)
O X X O
调用-返回层级结构 O O X O

帮助 #

pyftrace 首次在 2024 年的 Pycon Korea 上发布,目前由 单人维护者 负责维护。

你的反馈对该项目的发展至关重要。

如果你有任何想法或建议,欢迎在 issue 中提出,或者至少给 pyftrace 一个 star, 这将给予我们极大的支持。

感谢你的阅读 :)