BodyBalanceEvaluation/DEBUG_GUIDE.md
2025-08-02 16:52:17 +08:00

5.2 KiB

调试指南

本文档介绍如何在开发过程中进行调试,包括断点调试、日志调试等方法。

调试方式概览

1. 批处理文件调试 (推荐新手)

# 启动调试模式
./start_debug.bat

2. Python脚本调试 (推荐)

# 直接运行调试服务器
python debug_server.py

3. VS Code调试 (推荐开发者)

  • 打开VS Code
  • 按F5或点击调试按钮
  • 选择"Debug Backend Server"配置

4. 命令行调试

# 激活虚拟环境
backend\venv\Scripts\activate

# 设置环境变量
set FLASK_ENV=development
set FLASK_DEBUG=1
set PYTHONPATH=%cd%

# 启动调试服务器
python -u backend\app.py

详细调试方法

VS Code 断点调试

  1. 安装Python扩展

    • 确保VS Code已安装Python扩展
  2. 打开项目

    code .
    
  3. 设置断点

    • 在代码行号左侧点击设置断点
    • 红色圆点表示断点已设置
  4. 启动调试

    • 按F5或点击调试面板的播放按钮
    • 选择"Debug Backend Server"配置
  5. 调试操作

    • F10: 单步跳过
    • F11: 单步进入
    • Shift+F11: 单步跳出
    • F5: 继续执行
    • Shift+F5: 停止调试

PyCharm 调试

  1. 打开项目

    • File -> Open -> 选择项目目录
  2. 配置Python解释器

    • File -> Settings -> Project -> Python Interpreter
    • 选择backend/venv/Scripts/python.exe
  3. 创建运行配置

    • Run -> Edit Configurations
    • 添加新的Python配置
    • Script path: debug_server.py
    • Working directory: 项目根目录
  4. 设置断点并调试

    • 点击行号左侧设置断点
    • 点击调试按钮启动

命令行调试

  1. 使用pdb调试器

    import pdb
    pdb.set_trace()  # 在需要调试的地方插入
    
  2. 使用ipdb (增强版pdb)

    pip install ipdb
    
    import ipdb
    ipdb.set_trace()
    

调试配置说明

环境变量

  • FLASK_ENV=development: 启用开发模式
  • FLASK_DEBUG=1: 启用调试模式
  • PYTHONPATH: 设置Python模块搜索路径

调试端口

常见调试场景

1. WebSocket连接问题

# 在handle_connect函数中设置断点
@socketio.on('connect')
def handle_connect():
    print(f'客户端连接: {request.sid}')  # 添加调试输出
    # 设置断点在这里
    emit('connect_status', {'status': 'connected'})

2. RTSP流问题

# 在generate_video_frames函数中设置断点
def generate_video_frames():
    print(f'RTSP URL: {rtsp_url}')  # 调试输出
    # 设置断点检查rtsp_url值
    cap = cv2.VideoCapture(rtsp_url)

3. API请求问题

# 在API路由中设置断点
@app.route('/api/patients', methods=['GET'])
def get_patients():
    print(f'请求参数: {request.args}')  # 调试输出
    # 设置断点检查请求参数

4. 数据库操作问题

# 在数据库操作中设置断点
def get_patients(self, page, size, keyword):
    print(f'查询参数: page={page}, size={size}, keyword={keyword}')
    # 设置断点检查SQL查询

日志调试

查看日志文件

# 实时查看日志
tail -f logs/debug.log
tail -f logs/backend.log

调整日志级别

# 在代码中临时调整日志级别
import logging
logging.getLogger().setLevel(logging.DEBUG)

前端调试

浏览器开发者工具

  1. 按F12打开开发者工具
  2. Console标签页查看JavaScript错误
  3. Network标签页查看网络请求
  4. WebSocket连接在Network -> WS中查看

前端调试技巧

// 在浏览器控制台中测试WebSocket连接
const socket = io('http://127.0.0.1:5000');
socket.on('connect', () => console.log('连接成功'));
socket.emit('start_video', {});

性能调试

使用cProfile

python -m cProfile -o profile_output.prof debug_server.py

内存使用监控

pip install memory-profiler
python -m memory_profiler debug_server.py

故障排除

常见问题

  1. 端口被占用

    netstat -ano | findstr :5000
    taskkill /PID <PID> /F
    
  2. 模块导入错误

    • 检查PYTHONPATH设置
    • 确认虚拟环境已激活
  3. 权限问题

    • 以管理员身份运行
    • 检查文件夹权限
  4. 依赖包问题

    pip install -r backend/requirements.txt --force-reinstall
    

调试检查清单

  • Python虚拟环境已激活
  • 所有依赖包已安装
  • 环境变量设置正确
  • 端口5000未被占用
  • config.ini文件存在且配置正确
  • 日志文件可以正常写入
  • 断点设置在正确位置

调试最佳实践

  1. 逐步调试: 从简单的断点开始,逐步深入
  2. 日志记录: 在关键位置添加详细的日志输出
  3. 单元测试: 编写测试用例验证功能
  4. 代码审查: 定期检查代码逻辑
  5. 版本控制: 使用Git跟踪代码变更

获取帮助

如果遇到调试问题,可以:

  1. 查看logs目录下的日志文件
  2. 检查控制台输出信息
  3. 使用浏览器开发者工具
  4. 参考项目文档和代码注释