日志排错与最小复现 - SpiralKernel/bioinfo-wiki GitHub Wiki
日志排错与最小复现
更新:2026-10-13;状态:可用;验证范围:文档核对;操作示例未在本机运行。
从第一条实际错误定位输入、环境和资源问题,用最小复现验证修复。
先找导致失败的步骤
工作流末尾的“任务失败”通常只是总结。找到失败任务的实际命令、退出码、标准错误和上游输入,再读最早具有解释力的错误。空文件、格式不符、找不到参考、内存不足和参数变动分别需要不同处理。
命令返回0也不保证生物学结果正确;应检查输出是否非空、样本数和特征数是否符合预期、过滤损失是否合理。某一步只生成标题行时,应回查输入和筛选条件。
一个可保存日志的外壳
#!/usr/bin/env bash
set -euo pipefail
mkdir -p logs
python3 analysis.py --input small.tsv > logs/analysis.stdout.log 2> logs/analysis.stderr.log
analysis.py和small.tsv是你自己的分析脚本与小输入,不是本Wiki附带文件。set -euo pipefail有助于暴露未定义变量和管道失败,但并不覆盖每种shell控制结构;仍要检查目标程序的退出状态和输出约定。大任务另查调度器状态,见服务器资源与批量任务。
把问题缩小
保留原始数据;复制少数有代表性的记录到独立目录,使错误仍能出现。记录系统、软件版本、完整命令、预期与实际结果。一次只改一个条件,再用同一小例子验证。若小例子成功、完整任务失败,检查规模相关的内存、磁盘、时间和特殊记录。
求助材料应包含必要的错误上下文和结构信息;涉及未公开样本时可用人工数据复现,避免提交原始身份信息。修复后同时验证成功情况与原来的失败情况,再恢复正式运行。