Debian系统下Python调试的常用方法
pdb是Python标准库自带的命令行调试工具,无需额外安装,适合快速定位简单问题。
import pdb; pdb.set_trace(),程序运行到此处会进入调试模式。n(next):执行下一行代码(不进入函数内部);s(step):执行下一行代码(进入函数内部);c(continue):继续执行直到下一个断点或程序结束;l(list):显示当前代码行周围的上下文(默认显示当前行及前后5行);p 变量名(print):打印变量的当前值(如p x查看变量x的值);q(quit):退出调试器并终止程序。ipdb是pdb的增强版,基于IPython,提供语法高亮、自动补全和更友好的交互界面,提升调试效率。
pip install ipdb(Debian系统需确保pip已更新)。import pdb; pdb.set_trace()替换为import ipdb; ipdb.set_trace(),运行脚本后进入增强版调试模式,支持pdb的所有命令,同时享受更流畅的操作体验。pdbpp是pdb的另一个增强版本,增加了语法高亮、命令行编辑(如按Tab键补全)、历史命令回溯等功能,适合需要更强大功能的开发者。
pip install pdbpp。import pdb; pdb.set_trace()替换为import pdbpp as pdb; pdb.set_trace(),运行后即可使用增强的调试功能。使用集成开发环境(IDE)的图形化调试工具,适合复杂项目或习惯可视化操作的用户。
Ctrl+Shift+D),选择“Python File”配置,点击绿色播放按钮开始调试;Shift+F9)启动调试;通过Python的logging模块记录程序运行时的信息,适合长期跟踪或生产环境调试,避免频繁修改代码插入断点。
DEBUG(输出详细信息):import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logging.debug()输出变量值或流程信息,例如:def calculate(x, y):
logging.debug(f"Calculating sum of x={x} and y={y}") # 记录输入参数
result = x + y
logging.debug(f"Calculation result: {result}") # 记录结果
return result
对于异步代码或需要更详细跟踪的场景,可使用专用工具:
pip install pysnooper,在函数上添加@pysnooper.snoop()装饰器,运行程序后会生成包含每行代码执行时间、变量变化的日志文件。通过编写单元测试用例,提前验证代码的正确性,避免问题积累;使用assert语句快速检查假设条件。
unittest或pytest框架编写测试用例,覆盖核心功能,例如:import unittest
def add(a, b):
return a + b
class TestAddFunction(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5) # 验证2+3=5
if __name__ == '__main__':
unittest.main()
assert 条件,若条件为假则抛出AssertionError,例如:def divide(a, b):
assert b != 0, "Divisor cannot be zero!" # 检查除数不为零
return a / b