一、 关于debug的小故事
1937年,美国青年霍华德·艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(mark1),又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机,肉铺磅秤,咖啡研磨机等乱七八糟玩意儿行业,正式跨进“计算机”领地。为马克1号编制程序的是哈佛的一位女数学家格蕾丝·霍珀,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍珀诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。从而debug意为排除程序故障的意思。
Debug调试,是一项学习编程人员的重要技能。只有当学会 debug 了以后,才可以正确的知道程序的走向流程是如何的,现在以下面一个简单的程序给大家介绍一下 Pycharm 中的 debug 功能!
def sum_demo(x, y):
for _ in range(2):
x += 1
y += 1
result = x + y
return result
if __name__ == '__main__':
a = 1
b = 2
c = a + b
result = sum_demo(1, 1)
print(result)
print(c)
print(a)
二、 debug 的断点调试
三、 四种方式开启debug调试
step over (F8):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在不存在子函数的情况下是和step into效果一样的。简单的说就是,程序代码越过子函数,但子函数会执行,且不进入。
step into (F7):在单步执行时,遇到子函数就进入并且继续单步执行,有的会跳到源代码里面去执行。
step into my code (Alt+Shift+F7):在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到源码中。
step out (Shift+F8):假如进入了一个函数体中,你看了两行代码,不想看了,跳出当前函数体内,返回到调用此函数的地方,即使用此功能即可。
Resume program (F9):继续恢复程序,直接运行到下一断点处。
以上功能,就是最常用的功能。 一般操作步骤就是,设置好断点,debug运行,然后 F8 单步调试,遇到想进入的函数 F7 进去,想出来在 shift + F8,跳过不想看的地方,直接设置下一个断点,然后 F9 过去。
|