开发模式的调试器到底暴露了什么?生产环境会不会误开?用 gunicorn 部署还有调试器吗?这篇用真实的 flask run 与 gunicorn 对比同一个出错的页面,并检查几种开关的优先关系(只看页面里有什么,没有尝试使用控制台)。
状态码 500
含 "Werkzeug Debugger" True
含源码行 "return 1 / 0" True
含文件路径 app.py True
含异常类型 ZeroDivisionError True
含 console 脚本(交互式控制台) True
含局部变量值 s3cret True
含 SECRET_KEY 的值 False
服务器启动日志里的提示: ['* Debug mode: on'] 状态码 500 | 响应: <!doctype html> <html lang=en> <title>500 Internal Server Error</title> <h1>Internal Server Error</h1> <p>The
含 "Werkzeug Debugger" False
含源码行 "return 1 / 0" False
含文件路径 app.py False
含异常类型 ZeroDivisionError False
含 console 脚本(交互式控制台) False
含局部变量值 s3cret False
含 SECRET_KEY 的值 False状态码 500 | 响应: <html> <head> <title>Internal Server Error</title> </head> <body> <h1><p>Internal Server Error</ 含调试器页面: False gunicorn 日志里记录了异常(堆栈在服务端日志里,不在响应里): True
默认 → ['* Running on http://127.0.0.1:9604'] --host 0.0.0.0 → ['* Running on all addresses (0.0.0.0)', '* Running on http://127.0.0.1:9605']
flask run(无参数) → 调试器页面: False flask run --debug → 调试器页面: True FLASK_DEBUG=1 flask run → 调试器页面: True FLASK_DEBUG=0 flask run --debug → 调试器页面: True
调试器的 PIN 保护与交互式控制台本篇没有验证,也没有尝试使用控制台。