PyCharm简单调试
本文简单讲述一下PyCharm
中经常用到的调试操作。
示例代码如下:
for i in range(10):
print("hello", i)
if i > 2:
print("ok!")
在代码前面打上断点,如下图所示:
单机调试按钮Debug
单机Resume Program
按钮,开始调试;
在PyCharm
调试模式下,Resume Program
(恢复程序)是一个调试操作,用于让程序在当前断点处继续执行,直到程序结束或遇到下一个断点为止。单机一次Resume Program
按钮后的效果如下所示。
首先,程序会运行for i in range(10):
这行代码,随后会在相应位置显示变量i
在内存中值的变化。此时程序停在了print("hello", i)
这行,但是还没有运行这一行。
再单机一次Resume Program
按钮,运行效果如下所示。执行print("hello", i)
这行代码,程序停在’if i > 2:'这行,但并没有运行这一行。也可以点击Console
选项卡,查看运行的效果。
重复以上步骤,可以观察程序运行的状态,以及变量i
的值在内存中的变化。
PyCharm
调试模式中的其他操作还有Step Over
,Step Into
,Step Into My Code
,Step Out
等。下面简单解释一下各种操作。
Step Over (跳过)
- 功能:执行当前行的代码,但如果该行代码调用了其他函数或方法,调试器不会进入该函数内部,而是跳过它,继续执行当前函数的下一行。
- 用途:当你不关心当前行调用的函数的内部实现,只希望快速跳过这些函数调用时使用。
示例代码:
def foo():
return bar() # Step Over 会跳过 bar() 的执行,而不进入 bar() 的代码内部
def bar():
print("Inside bar!")
Step Into (进入)
- 功能:当程序执行到某一行代码时,如果该行是一个函数调用,
Step Into
会让你进入该函数的实现细节并逐行调试。 - 用途:当你希望查看某个函数内部的实现并调试其中的代码时使用。
示例代码:
def foo():
return bar() # Step Into 会进入 bar() 函数并开始调试 bar() 内部代码
def bar():
print("Inside bar!")
Step Into My Code (仅进入我的代码)
- 功能:与
Step Into
类似,但这个操作仅会进入你自己编写的代码,而忽略第三方库(例如外部依赖或者系统库)中的代码。 - 用途:当你希望避免调试外部库的代码,专注于自己编写的业务逻辑时使用。可以避免在调试过程中进入不相关的外部代码。
示例代码:
def foo():
return bar() # 如果 bar() 是外部库的函数,Step Into My Code 会跳过它,直接跳到 foo() 的下一行
Step Out (跳出)
- 功能:当你进入一个函数进行调试时,
Step Out
会执行完当前函数的剩余代码并跳出函数,直接返回到调用该函数的位置(即跳出当前函数并回到调用它的地方)。 - 用途:如果你已经进入一个函数调试,但不想再逐行执行该函数的代码,而是希望尽快返回到调用它的位置时使用。
示例代码:
def foo():
print("In foo")
bar() # Step Out 会让你跳出 bar() 函数并返回到 foo() 调用它的位置
def bar():
print("In bar")
感谢浏览,一起学习!