python_truss [-h] [-e EXPR] [-b] [-d] [-r] [-o OUTPUT_FILE] [-t TIMEOUT] [-k KEYWORD_FILTER] [-s] [-p PROCESS_IDS ...] [--python-version] [--version] [-v]
python_truss 是一款用于观测 Python 进程并打印其系统调用的诊断与分析工具。它类似于 truss,但通过附加到正在运行的 Python 进程或启动新的 Python 脚本来观测 Python 进程。
该工具是跨平台的,支持 Python 2 和 Python 3。在恶意软件分析、事件响应和调试场景中,当你需要在不阅读全部源代码的情况下了解 Python 程序的行为时,它尤其有用。
-h, --help:
显示此帮助信息并退出。
-e EXPR, --expression EXPR:
评估 Python 表达式 EXPR 而不是脚本。
-b, --batch:
以批处理模式运行(非交互式)。
-d, --debug:
启用调试输出。
-r, --raw:
打印未格式化的原始系统调用缓冲区。
-o OUTPUT_FILE, --output OUTPUT_FILE:
将输出写入 OUTPUT_FILE 而非标准输出。
-t TIMEOUT, --timeout TIMEOUT:
最多运行 TIMEOUT 秒后退出。默认值为 30。
-k KEYWORD_FILTER, --keyword-filter KEYWORD_FILTER:
仅打印包含 KEYWORD_FILTER 的系统调用。此选项可多次指定。
-s, --strace:
使用类似 strace 的输出格式。
-p PROCESS_IDS, --pid PROCESS_IDS:
附加到具有指定 PID 的进程。此选项可多次指定,多个 PID 可用空格分隔。
--python-version:
打印 Python 版本并退出。
--version:
打印工具版本并退出。
-v, --verbose:
提高详细程度。可多次使用。
0: 成功。
1: 未指定的错误。
2: 无效的命令行参数。
130: 被 SIGINT 中断(例如 Ctrl-C)。
以下环境变量会影响 python_truss 的行为:
PYTHON_TRUSS_LOG_LEVEL
控制日志级别。可选值:DEBUG、INFO、WARNING、ERROR。默认值为 INFO。
PYTHON_TRUSS_MAX_BUFFER
设置用于捕获系统调用输出的缓冲区最大大小(以字节为单位)。默认值为 4096。
/tmp/python_truss.log
默认日志文件路径。附加到正在运行的 Python 进程并跟踪 10 秒:
python_truss -p 1234 -t 10
在 python_truss 下运行 Python 脚本并输出原始系统调用:
python_truss -r script.py
跟踪 Python 脚本中与网络相关的系统调用:
python_truss -k socket -k connect script.py
附加到多个 PID 并将输出写入文件:
python_truss -p 100 200 300 -o trace.txt
python_truss 在 MIT 许可证下发布。详情请参阅 LICENSE 文件。