开放、可扩展的 Python 注入器/分析器/分析器
项目描述
ppTOP
ppTOP 是开放的、可扩展的 Python 注入器/分析器/分析器。
主要思想是在 Python 进程(已经运行或将要启动)中注入自定义代码,并在不修改任何代码的情况下分析其行为。
对调试日志中的“打印”和垃圾说不——现在你有了 ppTOP。用于 Python 的现代 MRI 扫描仪。
安装
pip3 install pptop
- Python:需要 3.5+,因为 ppTOP 使用 asyncio
- 可以注入任何 Python 版本(已测试:2.7+)
- 注入正在运行的进程需要gdb(几乎所有 Linux 发行版中都存在)
- 目前仅支持 Linux 系统
特征
ppTOP 可以注入到任何正在运行的 Python 进程中
或者您可以手动加载 Python 程序并分析其启动
要启动程序,请按Ctrl+L或在命令行参数中指定-w sec参数以在指定的延迟后自动启动它。
来自连接过程的数据被实时收集并显示在基于表格的控制台 UI 中,可以使用自定义插件轻松扩展。
所有数据表都可以滚动、过滤,新的数据收集可以暂停。如果出现问题,任何插件都可以随时重新注入。
用法
要启动 ppTOP,请键入
pptop
然后从列表中选择要注入的 Python 进程。
或者,您可以使用
pptop PID
# or
pptop PID-FILE
并从命令行指定进程。
如果要分析程序启动,只需键入
pptop /path/to/program.py
程序将在等待状态下加载,准备好后按Ctrl+L。
要获得当前插件的帮助,请按F1显示模块文档。
配置
默认情况下,插件和键盘快捷键在 ~/.pptop/pptop.yml文件中配置(在首次启动时自动创建)。
标准插件
- asyncio异步循环监视器
- atasker atasker监视器
- env查看进程操作系统环境变量
- 日志注入所有 Python 记录器并收集日志消息
- malloc跟踪对象内存分配
- neotasker neotasker显示器
- open_files查看进程打开的文件
- script_runner在进程内启动自定义脚本
- 线程查看进程线程
- vars变量/函数观察者
- yappi yappi分析器插件
大多数插件包含两部分代码:一部分在分析过程中收集数据,另一部分在 ppTOP UI 中显示。对于分析过程,所有插件都是不可见的、安全的和可卸载的(至少他们尽力了 :)
控制台模式
使用“`”按钮,可以打开远程 Python 控制台。它没有标准 Python 控制台那样的完整功能,但支持所有常用功能,如导入模块、定义函数和变量、执行函数和循环等。
控制台有自己的远程全局变量,它们会一直保留到 ppTOP 退出和注入的服务器终止。
抓取标准输出/标准错误
如果使用“-g”选项启动,ppTOP 将获取注入进程的 stdout/stderr 并将其打印到本地控制台。您可以通过按Ctrl+O来查看本地控制台,而无需进入控制台模式。
文档
配置、故障排除、高级使用、插件开发: https ://pptop.bma.ai/doc/
去做
- 更多插件
- 高级过滤
- 数据快照
- 逐步调试器
- JSON API,网页界面
- 图表
享受!:)
ps master中的代码可以完全破解,只能用pip安装。