写ref="/tag/131/" style="color:#EB6E00;font-weight:bold;">代码时难免会遇到程序跑不起来、结果不对或者卡在某个地方的情况。这时候,光靠打印日志一条条排查太费劲。PyCharm 的调试模式就是为此而生的,它能让你一步步看代码执行过程,像放电影一样暂停、前进,看清每一步变量的变化。
开启调试前的准备
打开你的 Python 项目,在 PyCharm 中找到想调试的脚本。确保代码文件已经保存,光标位置不用特别调整。在行号的左侧点击一下,就能设置断点——你会看到一个红点出现,这表示程序运行到这里会自动停下来。
比如你有这样一段代码:
def calculate_total(items):
total = 0
for item in items:
total += item * 1.1 # 加上10%税费
return total
items_list = [10, 20, 30]
result = calculate_total(items_list)
print(f"总价是:{result}")
如果发现最终输出的价格不对,可以在 total += item * 1.1 这一行加上断点,看看每次循环时 total 是不是按预期增长。
启动调试会话
右键点击编辑器中的代码区域,选择“Debug '文件名'”(而不是 Run),PyCharm 就会以调试模式运行程序。一旦执行到断点,程序就会暂停,底部的“Debug”面板自动弹出。
这时你可以看到当前函数调用栈、局部变量的值,比如 item 和 total 都显示得清清楚楚。想继续往下走,可以点击“单步执行”按钮(Step Over),它会逐行运行代码,但不会钻进函数内部。
深入函数内部看细节
如果你怀疑某个函数逻辑有问题,比如上面的 calculate_total 计算方式错了,可以在调用处使用“Step Into”(步入)。点击后,调试器就会跳进这个函数里,从第一行开始逐行执行。
相反,“Step Out”适合你已经看过函数内部,想快速跳出回到调用它的位置。这种控制粒度,比反复加 print 强太多了。
查看和修改变量值
在 Debug 面板的 Variables 区域,所有当前作用域内的变量都列出来了。更方便的是,你还能直接双击某个变量的值进行修改。比如发现 items_list 缺了一个元素,临时改成 [10, 20, 30, 40],然后继续运行,看会不会得到正确结果。
这种边调试边调整的能力,在处理配置错误或边界情况时特别实用。
条件断点:只在特定情况下暂停
有时候你并不想每次循环都停下来,比如遍历一万条数据,只想看第 800 次循环出了什么问题。这时候可以用条件断点。
右键点击已设的断点,选择“Edit breakpoint”,输入条件,比如 item == 800。这样只有满足条件时才会暂停,省去大量无意义的等待。
快速复现和修复 Bug
有个朋友做电商后台,总说优惠券金额算错。他用 PyCharm 调试模式设了个断点,一步步跟进去才发现是折扣率被多乘了一次。当时要是靠打印日志,可能得翻半天输出信息。而调试器直接把变量变化摆在眼前,几分钟就定位了问题。
熟练使用调试模式后,你会发现很多“玄学问题”其实都有迹可循。PyCharm 不只是写代码的工具,更是查问题的显微镜。