SuperAPI AI 工具集

flight-profiler-vmtool

编程与开发

查看项目

更新于 10-15 19:54

技能介绍

用途:在运行中的 Python 进程内检查存活类实例。核心场景是状态检查(查找某类所有实例并查看当前属性值,如连接状态、队列长度、内部标志)和方法调用(通过 -e 表达式在实例上调用方法触发诊断动作)。也可用于统计某类实例数量(排查内存泄漏)、按属性过滤特定状态的实例,或强制垃圾回收。

前置条件:需先阅读 flight-profiler-attach 技能,了解平台要求、安装、权限与连接细节。

调用方式:flight_profiler <pid> --cmd "vmtool -a <action> [options]" --no-color。

选项:-a/--action 指定 forceGc 或 getInstances(必填);-c/--class 指定类定位符(module class,getInstances 时必填);-e/--expr 指定在被找到实例上求值的表达式,变量 instances 为列表,默认 instances;-x/--expand 设置对象树展开层级 1-6,默认 1;-n/--limit 设置最多收集实例数,-1 为不限,默认 10;-r/--raw 使用 str(等同 print)而非默认 JSON 序列化;-v/--verbose 显示列表/字典中全部嵌套项,不截断。

常用 -e 表达式:instances 查看全部;len(instances) 计数;instances[0] 配合 -x 2 详查单个;[i for i in instances if i.attr=='val'] 按属性过滤;[i.field for i in instances] 提取单一字段;any(...) 判断条件;instances[0].get_stats() 等调用诊断方法;[i.get_status() for i in instances] 对全部实例调用方法。

输出:forceGc 返回纯文本消息;getInstances 返回表达式结果块,含 EXPR、TYPE、VALUE 三部分。

限制与注意:-e 表达式在目标进程内执行,调用方法会真正运行,应仅用于只读诊断方法,避免有副作用的方法;列表推导式在 shell 中需注意引号转义;实例顺序由 gc.get_referrers() 决定,可能与创建顺序不一致;收集常见类的全部实例可能较慢,可用 -n 限制;对象过大时可只提取需要的字段,或用 -v 关闭截断。

相关命令:getglobal 用于检查已知全局变量(vmtool 用于查找未知实例);console 用于更复杂的检查逻辑。源文件包括 CLI 插件、解析器和服务器插件。