诊断和恢复
Screph 崩溃报告是本地恢复路径,而不是后台遥测。通过“日志记录”页面,您可以检查清单、独立导出 ZIP,以及从经过身份验证的帐户手动提交自动构建的捆绑包。替代启动提示也需要“是”响应,但在提交之前不会显示清单。
1. 本地捕获的内容
启用崩溃报告后,共享管理器会处理未处理的 Python/线程异常,并针对某些本机故障启用 faulthandler。运行时日志目录可能包含:
session.json— 会话身份和状态;exception.json— 结构化异常(如果存在);faulthandler.log— 可用本机/线程诊断;- 运行时日志和该崩溃会话拥有的其他文件。
DEVELOPER → Logging 下的控件具有不同的应用程序计时。根级别、模块前缀过滤器和主文件处理程序会立即为当前桌面进程重建。崩溃管理器设置(启用、本机/全线程捕获、会话日志记录和保留)在初始化期间读取,并在重新启动后完全生效。启动提示设置也适用于下次启动。
自动应用每次创建页面时都会启用,并且不会保留。如果禁用,控件将保持草稿状态,直到立即应用;从文件重新加载放弃该草稿。- 主
logging.to_file和崩溃会话session.log是单独的处理程序。在当前运行期间禁用前者不会关闭已安装的会话处理程序。 - 模块标志过滤记录器名称前缀;它们不会禁用产品功能。它们适用于当前进程,而单独的工具和子进程有自己的启动日志配置。
2. 诊断捆绑包
- 在日志记录页面上打开
Crash Reports组。 - 按
刷新内容。预览显示源、文件数、总大小和最多 200 个存档路径;它是清单,而不是内容查看器。如果存在更多条目,ZIP 仍包含完整的条目。 - 如果需要,打开日志/崩溃报告文件夹并检查源文件。
Export 诊断 bundle在选定位置创建本地 ZIP。
该存档包含 diagnostics_report.json 和 json_role=diagnostics_report、版本和文件/大小清单。当存在未解析的已保存报表时,页面会在当前会话之前选择它。该捆绑包包含所选的崩溃报告树和顶级 .log/.txt 文件Screph 数据/日志。尽管日志可能包含其路径或名称,但其他组件拥有的项目、自动保存、模型和嵌套目录不会自动附加。
3. 手动提交
- 上传不会静默进行。它需要经过身份验证的帐户并按
Send to server,或在启动提示中单独同意。手动按钮会自行构建临时 ZIP;不需要事先进行本地导出。 - 日志记录页面显示清单。启动提示显示错误类型/文本、时间和本地报告路径,但不显示文件列表或大小;选择“是”将立即开始捆绑包创建和提交。要首先检查,请选择否,打开日志记录并手动提交。显示提示后,不会再次自动提供相同的报告。
- 多部分请求包含 ZIP、可选注释、源和环境元数据:平台、Python 版本、模式、当前工作目录、会话 ID 和完整的本地报告路径。存在
client_version协议字段,但当前桌面呼叫者将其留空;应用程序版本记录在session.json中。 - 服务器仅接受以
.zip后缀命名的非空文件,最大大小为 25 MB,存储原始存档和 SHA-256,并记录帐户、IP 和 User-Agent。目前没有自动服务器端诊断删除期限。 - 在手动提交之前,审核、预览以及源文件(如果需要):运行时日志或崩溃产物可能包含路径、项目名称和其他工作区详细信息。
- 如果身份验证令牌、捆绑包或网络不可用,则操作明确失败;本地导出仍然可用。
4. 项目恢复
崩溃报告不会取代项目自动保存。 Selector 维护一个单独的规范 autosave_session.json,而 Capture 拥有其记录自动保存。启动时,当恢复元素或边缘或至少一个基本映像时,Selector 接受自动保存。 Capture 首先尝试恢复已保存的媒体时间线,然后恢复最新的 close_autosave_*,并在时间线已填充时不替换任何内容。
通过 File → Load Project,项目经理可以打开 Autosaves 选项卡并将整个自动保存目录复制到以新名称独立项目。但是,管理器仅允许对具有非零域计数的自动保存执行此操作;仅屏幕截图恢复在当前 UI 中仍然是仅启动边界。
如果关闭时自动保存无法写入,则 Screph 报告失败并询问是否关闭。Project Manager在问题下将不可打开的导出和损坏的 JSON 分开,但其预打开的诊断不是新鲜的完整产物完整性扫描。加载后,InfoPanel 中会出现更详细的域加载报告和保存的诊断。
5. 边界
- 没有任何崩溃处理程序可以保证捕获每个进程故障。
- 支持帮助程序和 Screph Code/Pro Agent 使用单独的进程。在正常的 Selector 流程中,自动化管理器 UI 是在桌面进程内创建的,而它启动的工作流是一个单独的 Python 子进程。子 stderr/stdout 和日志可能与主桌面日志不同,并且子故障不一定会创建主窗口崩溃会话。
- 停止直接自动化管理器子级并不能保证终止工作流生成的进程。失败后,检查任务管理器、目标应用程序和意外环回侦听器。
- 捆绑包可帮助诊断,但不是项目备份。
- 恢复自动保存通过复制整个自动保存目录创建一个单独的项目;在继续之前验证源路径、产物和不相关的同级文件。
如果单独的组件无法启动,请在重新启动主桌面之前先记录其命令/运行时就绪情况、PID 或退出代码以及匹配日志。有关流程边界图,请参阅 架构指南。