SuperAPI AI 工具集

skyrim-crash-diagnostics

测试与质量

查看项目

更新于 10-30 16:19

技能介绍

用途

Skyrim 崩溃诊断用于排查《上古卷轴5:天际》在启动、加载、存档或运行阶段的崩溃问题。它面向需要从崩溃日志、近期变更、插件列表、DLL 清单和可复现证据中定位原因的模组环境。

最小证据要求

诊断前需要准备以下材料:

  • 完整崩溃日志,而非截图片段。
  • 确切的游戏运行时和崩溃记录器。
  • plugins.txt、loadorder.txt 以及模组管理器列表。
  • 带版本的 SKSE DLL 清单。
  • 近期新增、移除、更新、生成输出和行为运行记录。
  • 复现点与复现频率。

方法

  1. 识别日志格式与崩溃阶段。
  2. 分离异常、出错指令、寄存器、调用栈、可能对象、已加载模块和插件列表。
  3. 在得到佐证之前,将日志中出现的具名 DLL 视为调用栈参与者,而非直接归因对象。
  4. 将日志与近期变更和版本兼容性进行关联。
  5. 检查缺失主文件、不兼容的运行时 DLL、过期的行为输出、坏资源、无效 FormID 以及存档特定状态。
  6. 生成带排序的假设列表,并为每个假设列出支持与反对的证据。
  7. 推荐最小可逆的隔离测试。
  8. 确认元凶后,将修复路由到对应的专门处理流程。

应避免的做法

  • 仅因 Precision.dll、hdtSMP64.dll 或其他常见模块出现在日志顶部就判定其有罪。
  • 在测试近期变更边界之前就要求大规模禁用模组。
  • 在诊断过程中编辑正在使用的模组列表。
  • 仅凭一份含糊日志就宣称确定结论。

证据标准

对于版本敏感的事实,按以下层级取证:

  1. 当前项目的 ENVIRONMENT.md、TASK.md、已安装框架版本和构建文件。
  2. 该确切版本的官方上游文档或源码。
  3. 用户已安装模组库中的已知良好文件,只读方式。
  4. 直接检查相关的 ESM、ESP、DLL、脚本、日志或归档。

不得用记忆、旧示例或看似合理的 token 替代。需在 VALIDATION.md 中记录证据路径或 URL。

证据驱动的环境控制

诊断前,将当前已安装构建与每个工作区/归档进行对比。使用确切部署的依赖布局复现,而非同目录测试架。当单元格/世界切换、对话、随从、动画模组、外观框架及其他竞争系统共享生命周期或角色状态时,需将其纳入考虑。在证明作用域、生命周期和近期变更时间线之前,不要归咎于具名 DLL。

非崩溃的运行时中止

部分 SKSE 日志会报告某个功能拒绝安装钩子。应将其视为功能级失败,而非自动视为游戏崩溃或整个插件失败。

对于 RVA 位于 .text 之外、vtable 不匹配或类似消息:

  • 确认插件是否有意失败关闭;
  • 记录哪个功能处于非活动状态;
  • 验证运行时、Address Library/CommonLib 修订版本、重定位或 vtable 索引;
  • 将候选指针映射到其实际模块;
  • 检查目标字节和节区权限;
  • 一次只测试一个设置开关;
  • 在没有归属证据的情况下,不要推断另一个列出的战斗 DLL 应负责。

将实现修复路由到 skyrim-skse-commonlib,将日志解释路由到 skyrim-runtime-log-forensics。