5.2 KiB
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 断点调试
-
安装Python扩展
- 确保VS Code已安装Python扩展
-
打开项目
code .
-
设置断点
- 在代码行号左侧点击设置断点
- 红色圆点表示断点已设置
-
启动调试
- 按F5或点击调试面板的播放按钮
- 选择"Debug Backend Server"配置
-
调试操作
- F10: 单步跳过
- F11: 单步进入
- Shift+F11: 单步跳出
- F5: 继续执行
- Shift+F5: 停止调试
PyCharm 调试
-
打开项目
- File -> Open -> 选择项目目录
-
配置Python解释器
- File -> Settings -> Project -> Python Interpreter
- 选择backend/venv/Scripts/python.exe
-
创建运行配置
- Run -> Edit Configurations
- 添加新的Python配置
- Script path: debug_server.py
- Working directory: 项目根目录
-
设置断点并调试
- 点击行号左侧设置断点
- 点击调试按钮启动
命令行调试
-
使用pdb调试器
import pdb pdb.set_trace() # 在需要调试的地方插入
-
使用ipdb (增强版pdb)
pip install ipdb
import ipdb ipdb.set_trace()
调试配置说明
环境变量
FLASK_ENV=development
: 启用开发模式FLASK_DEBUG=1
: 启用调试模式PYTHONPATH
: 设置Python模块搜索路径
调试端口
- 后端服务: http://127.0.0.1:5000
- 健康检查: http://127.0.0.1:5000/health
- WebSocket: ws://127.0.0.1:5000/socket.io/
常见调试场景
1. WebSocket连接问题
# 在handle_connect函数中设置断点
@socketio.on('connect')
def handle_connect():
print(f'客户端连接: {request.sid}') # 添加调试输出
# 设置断点在这里
emit('connect_status', {'status': 'connected'})
2. RTSP流问题
# 在generate_rtsp_frames函数中设置断点
def generate_rtsp_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)
前端调试
浏览器开发者工具
- 按F12打开开发者工具
- Console标签页查看JavaScript错误
- Network标签页查看网络请求
- WebSocket连接在Network -> WS中查看
前端调试技巧
// 在浏览器控制台中测试WebSocket连接
const socket = io('http://127.0.0.1:5000');
socket.on('connect', () => console.log('连接成功'));
socket.emit('start_rtsp', {});
性能调试
使用cProfile
python -m cProfile -o profile_output.prof debug_server.py
内存使用监控
pip install memory-profiler
python -m memory_profiler debug_server.py
故障排除
常见问题
-
端口被占用
netstat -ano | findstr :5000 taskkill /PID <PID> /F
-
模块导入错误
- 检查PYTHONPATH设置
- 确认虚拟环境已激活
-
权限问题
- 以管理员身份运行
- 检查文件夹权限
-
依赖包问题
pip install -r backend/requirements.txt --force-reinstall
调试检查清单
- Python虚拟环境已激活
- 所有依赖包已安装
- 环境变量设置正确
- 端口5000未被占用
- config.ini文件存在且配置正确
- 日志文件可以正常写入
- 断点设置在正确位置
调试最佳实践
- 逐步调试: 从简单的断点开始,逐步深入
- 日志记录: 在关键位置添加详细的日志输出
- 单元测试: 编写测试用例验证功能
- 代码审查: 定期检查代码逻辑
- 版本控制: 使用Git跟踪代码变更
获取帮助
如果遇到调试问题,可以:
- 查看logs目录下的日志文件
- 检查控制台输出信息
- 使用浏览器开发者工具
- 参考项目文档和代码注释