SuperAPI AI 工具集

systematic-debugging

编程与开发

查看项目

更新于 10-16 03:39

技能介绍

用途:为 Django 项目提供一套系统化调试方法论,核心原则是“未找到根因前不做修复”,避免用补丁掩盖底层问题。适用于排查 bug、修复测试失败、处理异常行为等场景。

主要能力:分为四个阶段。阶段一复现与调查:先写失败测试捕获 bug 行为,通读错误信息,用 git diff、git log 检查近期改动,追踪数据流定位坏值来源。阶段二隔离:加入策略性日志缩小范围。阶段三识别根因:读完整堆栈、用调试器检查状态、找出被违反的假设。阶段四修复与验证:在根因处修复,运行复现测试与完整测试套件,必要时手动验证。

工具与用法:Django Debug Toolbar 需在 settings/dev.py 中加入 debug_toolbar 到 INSTALLED_APPS 与 MIDDLEWARE,并设置 INTERNAL_IPS,用于检查 SQL 面板中的 N+1 查询和超过 10ms 的慢查询。Python 调试器可用 breakpoint(),命令包括 n、s、c、p var、q;测试失败时可用 uv run pytest --pdb -x 进入调试器。SQL 调试可配置 django.db.backends 日志为 DEBUG,或用 CaptureQueriesContext 在测试中统计查询数。

常见问题:N+1 查询用 select_related 修复;表单未保存需检查 is_valid()、save() 调用及 commit=False 情况;CSRF 403 检查表单是否含 csrf_token;迁移问题可用 uv run python manage.py showmigrations 与 migrate app_name 0001 --fake;Celery 可同步直接调用任务或设 CELERY_TASK_ALWAYS_EAGER;HTMX 可用 htmx.logAll() 与检查 HX-Request 头。

验证清单:根因已识别、复现测试通过、完整测试套件通过(uv run pytest)、无类型错误(uv run pyright)、无 lint 错误(uv run ruff check .)。

限制与警示:连续三次修复失败通常意味着架构问题,应停止并讨论;避免“先快速修复再调查”“再试一次”“这应该能行”等心态。该技能可与其他技能配合,如 pytest-django-patterns、django-models、celery-patterns、htmx-alpine-patterns、django-extensions、skill-creator。