9.1 启动调试器
我们会通过PyCharm学习调试过程,这很合情合理,也很舒心。 你马上就会体会到。
在PyCharm中,你可以用两种模式运行你的程序:
程序运行模式 | 面板图标 | 快捷键 |
---|---|---|
普通执行 | Shift+F10 | |
调试模式运行 | Shift+F9 |
你已经熟悉普通模式了:程序启动,运行然后结束。但调试模式会带给你不少惊喜。
调试模式
调试模式让你可以逐步执行你的程序。更准确地说是, 逐行:一行一行地。在此过程中,你可以在程序的每一步(每执行一行代码之后)查看变量的值。甚至还能改变它们的值!
要掌握调试的基本艺术,你需要了解三件事:
- 断点
- 逐步执行
- 查看变量值
9.2 断点 (Break Points)
IDE允许你在代码中放置特殊标记——断点 (break point)
。每当程序在调试模式下运行并到达标记为break point
的行时,它就会暂停。
要在某一行设置break point
,只需在PyCharm中点击那行的左边。举个例子:
结果,这行会被标记为断点(break point)
,而PyCharm会用红色标记整行:
在代码左边的面板上再次点击鼠标会移除已经设置的break point
。
你还可以使用快捷键组合Ctrl+F8在当前行直接设置break point
。再次按下Ctrl+F8会移除已经存在的break point
。
9.3 在调试模式下运行程序(debug)
如果你的程序中有至少一个断点,你可以在调试模式下运行程序(Shift+F9或“虫子图标”)。
启动调试模式后,程序会照常运行。但只要它到达标记为break point
的代码行,就会暂停。举个例子:
在截图的上半部分,你可以看到带有两个断点的程序代码。程序停在了第2行——用蓝线标记
。第2行还未执行:控制台还没有输出任何东西。
在屏幕的下半部分,你可以看到调试模式面板:Thread & variables
面板、Console
面板(屏幕输出),以及一组调试模式的按钮。
你可以通过点击左下角面板上的Resume Program
按钮(或按下F9键)来解除程序的暂停状态(继续执行)。
如果按下这个按钮(或F9),程序就会继续运行,直到遇到下一个断点或结束。按下这个按钮后你会看到:
程序停在第二个断点处,控制台输出"Hello"
和"and"
,这表示三行输出代码中只有两行被执行。
9.4 逐步执行
如果你的程序在调试模式下运行,你还可以逐步执行它:一步一步来——一行一行。逐步执行有两个快捷键:F7和F8:每个键都会执行当前行的代码。但首先你需要用break point
暂停你的程序。
如果你想逐行执行你的程序,你需要在程序一开始就设置break point
——在第一行代码上——并在调试模式下启动它。
当程序暂停后,你可以开始逐行执行。 按下一次F8键——执行一行。
这是我们的程序在停止且按下一次F8后的样子:
第一行——print("Hello")
——已经执行,当前行是第二行。
你也可以在截图的下方看到,屏幕上已经输出了"Hello"
这个词。
9.5 逐步执行并进入函数
如果你的程序中有自定义函数,并且你希望在调试模式下不仅能逐步执行程序,还能进入你的函数,那么在“进入函数”时你需要按F7键,而不是F8。
比方说,你在逐步执行程序,现在停在第5行。如果你按F8键,PyCharm会直接执行第五行并跳转到第六行。
如果你按F7,PyCharm会逐步执行hello()
函数内的代码:
很简单。如果你不太关心某个方法内部发生了什么,按F8;如果关心,按F7,逐步执行它的所有代码。
GO TO FULL VERSION