以下是Ubuntu下Python调试的常用方法,涵盖基础到进阶工具:
print语句
在关键位置输出变量值或执行状态,适合快速定位问题。
print(f"变量值: {variable}")
assert语句
检查条件是否成立,失败时抛出AssertionError,用于捕获逻辑错误。
assert x > 0, "x必须为正数"
logging模块
记录程序运行日志,支持不同级别(DEBUG/INFO/ERROR等),适合大型项目。
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(message)s')
logging.debug("调试信息")
pdb(Python内置调试器)
import pdb; pdb.set_trace(),运行时暂停执行。n(执行下一行)c(继续执行直到断点)p 变量(打印变量值)l(查看当前代码上下文)q(退出调试器)ipdb(pdb增强版)
提供更友好的交互界面,支持语法高亮和自动补全,需安装:
pip install ipdb
使用方式与pdb类似,但体验更佳。
PyCharm
Run → Edit Configurations → 选择Python脚本,设置参数和工作目录。Shift+F9启动调试,支持单步执行、查看变量值等。VS Code
launch.json → 选择Python环境,设置断点后点击绿色箭头启动。GDB调试Python进程
适用于分析Python程序的底层调用栈,需安装gdb和python-dbg:
sudo apt install gdb python3-dbg
sudo gdb -p <进程ID> # 附加到运行中的Python进程
(gdb) py-bt # 查看Python调用栈
Spyder
集成科学计算环境的IDE,支持图形化调试,适合数据分析场景。
PySnooper
自动记录函数执行过程中的变量变化,无需手动插入print语句,安装后使用装饰器即可:
pip install pysnooper
@pysnooper.snoop()
def my_function():
# 代码逻辑
try:
# 可能出错的代码
except Exception as e:
print(f"发生错误: {e}")
import traceback
traceback.print_exc() # 打印详细错误信息
update-alternatives切换系统默认Python版本。-g选项,生成调试符号(适用于复杂场景)。根据项目复杂度选择合适工具,简单脚本可用print或pdb,大型项目推荐IDE或logging模块。