如何进入调试模式
1.点击如下图标,或者按下Ctrl+Shift+D
即可跳转到该窗口,点击运行和调试即可开始调试
2.或者点击运行在这里选择调试,可以使用快捷键F5
直接开启调试
如果你不想使用调试而是直接运行可以点击右侧的箭头
断点
点击代码左侧的编辑器的侧栏来设置断点,或者使用快捷键F9
在调试的时候必须要有断点,程序才能停下(或者程序出现错误,会在错误的地方停下)
调试介绍
在如图所示的位置添加断点
这是个简单的人为制造除零异常的程序
import numpy
import random
def div(data):
for i in data:
temp = 100/i
if __name__ == '__main__':
data = list(numpy.random.rand(100))
data[random.randint(0, 99)] = 0
div(data)
点击运行和调试(或者按下F5
)
选择Python Debugger
调试工具
屏幕上侧出现了一行工具栏
依次为
继续/暂停 F5:
控制调试程序的运行和停止,点击运行后会继续运行直到遇到下一个断点逐过程 F10:
会一行一行运行,如果遇到了函数不会进入而是直接跳过单步调试 F11:
也是一行行运行,但是遇到了函数会进入函数体单步跳出 Shift+F11:
如果在函数体或子例程里面,会执行完后面的所有代码重新启动Ctrl+shift+F5:
重新启动调试程序停止 Shift+F5:
停止调试
变量监视
你可以在右侧看到此时的局部变量Locals
和全局变量Globals
安装jupyter插件
随后你可以在数据查看器中查看数值
监视数据
你可以右键将你关心的数据添加到监视中
随后在每一次运行的时候更新,监视的数据也会更新方便你查看
添加表达式
你可以在表达式中键入你关心的值,例如我关心i
是否等于0
不同的断点
记录点
记录点在调试的时候不会停住,而是会在调试控制台打印输出你的消息
右键可以添加记录点
或者在此处添加
可以在此处填写你想输出的消息,{}内可以添加你想打印的代码内容
可以在下方的调试控制台看到你的日志输出
在程序出现问题的时候你想知道某些值的情况下很有用
触发式断点
此断点不会直接启用而是在你选定的断点触发后才会启用
在此处选择你想等待的断点
例如我这个斐波那契数列的例程
def fibonacci(n):
fib_sequence = [0, 1] # 前两个斐波那契数列的值
if n <= 0:
return "请输入一个正整数"
elif n == 1:
return [0]
elif n == 2:
return fib_sequence
for i in range(2, n):
next_number = fib_sequence[-1] + fib_sequence[-2]
fib_sequence.append(next_number)
return fib_sequence
if __name__ == "__main__":
num = int(input("输入一个整数"))
res = fibonacci(num)
print(res)
print("ok")
只有在我键入负数时第一个断点会触发,随后导致这个触发式断点触发启用
在键入正数时程序完全不会中断
条件断点
表达式型
只有在你编写的条件表达式为真时断点才会触发
例如在i==0
的时候断点触发
启用调试的时候只有在i等于0时才会中断
命中次数式
只有在该段代码运行第多少次时才会中断
可以看到在调试时输出了9个hello
后中断,且只会中断这一次
联合使用
在左下角的断点栏里面选择编辑条件即可
你可以为一个断点同时使用上面的四种功能
- 表达式
- 命中次数
- 日志消息
- 触发式
例如我添加上两种
i<5 时会中断,执行的第十次会中断
注意 如果你加上了记录点,如下所示
那么在调试的时候这个断点不会中断,而是只会在应该中断的时候在调试控制台打印记录消息
函数断点
专门用于给函数添加断点,无需在具体调用的地方添加
每次在调用函数时会自动中断
输入你想中断的函数名
同样你可以在函数断点上设置你想要的中断条件和命中次数