烽天降临联盟-网游跨服战场活动门户

vscode调试教程和断点类型的介绍

5552

如何进入调试模式

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 时会中断,执行的第十次会中断

注意 如果你加上了记录点,如下所示

那么在调试的时候这个断点不会中断,而是只会在应该中断的时候在调试控制台打印记录消息

函数断点

专门用于给函数添加断点,无需在具体调用的地方添加

每次在调用函数时会自动中断

输入你想中断的函数名

同样你可以在函数断点上设置你想要的中断条件和命中次数

配置文件相关

调试库函数

在有时候你出现中断了,但是出错的地方不是你的代码,此时你看不到函数中的状态,因为vscode默认是不会进入系统函数的。或者说你想学一下某些库函数的写法,那么你可能需要这种方式

例如你想看一下json.loads的运行过程

import json

data = json.loads(1)

print(data)

默认的调试是不会进入的

接下来教你如何改变

选择第一个

还是第一个

这是默认的调试配置文件

增加上一行即可调试库函数了

"justMyCode": false

我们调试一下看看

可以看到这里有我们刚刚的配置显示,直接点箭头开始调试

点击单步调试

可以看到我们顺利的进入到了函数的执行过程

有些库函数是用c/c++编写的这样就不能对其进行这样的调试,例如print你就看不到他的过程

带参数的调试

使用下面的简单示例来讲一下带参数的调试, 这是deepseek生成的你不需要关心他的写法,我只想让你知道怎么把参数传给程序进行调试

import argparse

import math

def calculate_operations(a, b):

"""执行数学运算并返回结果"""

results = {

'sum': a + b,

'difference': a - b,

'product': a * b,

'quotient': a / b if b != 0 else 'undefined',

'power': math.pow(a, b),

'logarithm': math.log(a, b) if a > 0 and b > 0 and b != 1 else 'undefined'

}

return results

if __name__ == '__main__':

# 设置命令行参数解析

parser = argparse.ArgumentParser(description='数学运算计算器')

parser.add_argument('num1', type=float, help='第一个数字')

parser.add_argument('num2', type=float, help='第二个数字')

parser.add_argument('--verbose', '-v', action='store_true', help='显示详细输出')

args = parser.parse_args()

# 执行计算

results = calculate_operations(args.num1, args.num2)

# 输出结果

if args.verbose:

print("详细计算结果:")

for op, result in results.items():

print(f"{op:>12}: {result}")

else:

print(f"简略结果: 和={results['sum']}, 积={results['product']}")

这是执行的效果

点击调试

选择第二个即可

直接在输入框输入参数

你便能顺利的含参调试程序

这里举的是你第一次调试的情况

如果你按照我上面的调试库函数的操作生成了配置文件,那么可能不会跳出这个框

此时你可以点击添加配置

选择python调试程序

再选带参版本

可以看到多了一个配置

这样你就可以选择调试配置了

选择好你想要的配置点击绿色的箭头即可调试了

也许你的程序每次调试的参数不需要修改,你不想自己输入,你可以直接在配置文件里面写好

再添加一个配置

我将名字改成了固定参数,这个name你可以自由修改

然后在args里按顺序提供你的参数即可,注意要加上双引号

可以看到又多了一个选项固定参数,选择这个进行调试即可