as debug调试 局部变量不显示值_Visual Studio Code中的Python程序断点调试

本文详细介绍了如何在Visual Studio Code中使用断点进行Python程序的调试,包括设置断点、开始调试、单步执行(Step Into, Step Over, Step Out)、理解和观察循环执行过程,以及对continue和while循环的调试方法。通过实例帮助读者理解程序执行逻辑。" 121286928,1218739,快速搭建Redis分片代理twemproxy:避坑指南,"['redis', '数据库', '代理', 'twemproxy']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

367bebf7b4d5870dcf32e1eb2f0007b3.png

本文描述Visual Studio Code的断点调试方法,帮助读者理解循环执行过程。

本文节选自作者的《Python编程基础及应用》视频教程。想完整零基础学习Python程序设计,欢迎使用此免费视频教程。

Python编程基础及应用_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
b17c6d7255707931c0105b9fe25cf124.png

1. 简介

在程序有BUG/缺陷,需要修复时,断点调试是发现缺陷的重要方法。对于初学者而言,断点调试还有另外一个用途:帮助理解程序背后的逻辑。

本文以下述程序为例,讲述在Visual Studio Code中的断点调试方法。

names = ['Peter Anderson', 'Frank Bush', 'Tom Henry','Jack Lee', 'Dorothy Henry']

sName = "NOTFOUND"
for x in names:
    if x.endswith("Henry"):
        sName = x
        break
    print(x, "not ends with 'Henry'.")

print("I found a Henry:", sName)

2. 打断点

在Visual Studio Code中打开相关代码文件,用鼠标在行号3的左方空白处单击(下图红点处),便会出现红色的断点-breakpoint。如果在相同位置再次单击,断点便会消失。在同一个程序中,断点可以打很多个。

61728c76ebfb0fbe3524c6e881299628.png

3. 开始调试

选择Debug->Start Debugging菜单项,或者直接按下F5快捷键(使用笔记本的读者注意:F5键可能同时复用了其它功能,需要配合Fn键使用);

93050eca8da56e97f8e7d03363fcd8b9.png

然后在弹出的菜单里选择Python File / Debug the currently active Python file;

f50c76d43ac43903eee702eeab6b3801.png

调试过程启动,程序开始运行,然后遇到了第3行的断点,停了下来。请读者注意,当前第3行是黄色高亮的,这说明程序执行完了1-2行,第3行处于等待执行状态。

65d89ddbb6aeb17b272878c430bb68d3.png

上图的左方,VARIABLES/变量栏则列出了全部的LOCAL/局部变量。可以看到,作为第1行代码的执行结果,名字为names的变量存在,其值为一个列表。因为第3行代码尚未执行, 所以目前sName变量尚不存在。

4. 单步前进 - Step Into

在前图的上方,有一个工具栏,其中,第三个按钮(方向向下的键头)的弹出标签为Step Into(F11)。这个按键的作用为单步前行。按一下这个按键,或者直接按F11,会发现程序向前执行了一行,第4行变为高亮待执行。作为第3行代码的执行结果,sName变量出现在左方VARIABLES栏中。如果把鼠标移至代码中的sName上方,Visual Studio Code还会显示sName变量的当前值为NOTFOUND。如下图:

16dd0d941a6706cdf15757524b7ce5bb.png

5. 继续单步前进-研究循环

再次点击Step Into, 第4行被执行,第5行变为高亮待执行。请读者注意,根据for循环, x变量取值names列表的第1个元素,其值为'Peter Anderson'。

ddf7660d0c6c720d0e04fd70dc1b5b98.png

显然,第5行的逻辑判断不成立,第6,7行不会被执行。再次按下Step Into后,第8行高亮待执行:

9cf776e8850da257995fef6ba091a3e5.png

Step Into执行第8行,下方控制台会输出相应的print结果,然后程序执行点回到了第4行,准备开始下一轮循环:

c0367470a441c5738a7050e1b9f088ec.png

再次Step Into后,第5行高亮待执行。此时,x取值names列表的第2个元素,其值为'Frank Bush':

c4900a15daced13d96ad6121b03df760.png

同样,Frank Bush也不是Henry,第5行的逻辑判断不成立,6,7不执行,第8行执行 ... 按Step Into两次,程序重新回到第4行,准备开始第三轮循环:

05d4558040048461183bf4f5cafc1174.png

再次按下Step Into, 第5行高亮待执行。此时,x取值names列表的第3个元素,其值为'Tom Henry'。请注意,VARIABLES栏中x变量的值。

732dbba3f8a0b2ac5e71fe23f7113ed0.png

这一次不一样了,x以"Henry"结尾,所以第5行的逻辑判断成立,再次按下Step Into,程序来到了第6行:

cf74926accd2da7f896b39dda257f524.png

Step Into执行完第6行后,sName的值从'NOTFOUND'变成了'Tom Henry',程序停在了第7行:

ebc560bc765180c1e0ab2539590bac84.png

按照语义,break语句执行将导致循环直接结束,第8行不会执行,剩下的names列表中的'Jack Lee', 'Dorothy Henry'会被忽略,程序直接来到第9行。由于第9行是空行, Visual Studio Code直接来到第10行。请读者注意,根据缩进规则,第10行与第4行的for循环属于同一层级,不属于循环体内部代码。

50d9c1eafc3065115c8e6ec431456176.png

再次Step Into, 第10行执行结束,下方控制台打印了“I found a Henry: Tom Henry。程序调试自动结束:

8d4beeb46c527bfc97db5c24ffb52bc1.png

6. continue, while

希望上述调试过程可以帮助读者理解for循环及break语句。

如果读者对continue, while循环等感到疑惑,也可以对相关代码进行调试研究。

7. Step Out, Step Over

Visual Studio Code的调试工具栏内,还有Step Out, Step Over等按钮。不同于Step Into(单步前进), Step Out, Step Over用于在调试过程中避免过分深入函数或者循环内部。

本文节选自作者的B站MOOC及同名教材:

Python编程基础及应用 — 重庆大学 高等教育出版社,作者亲授_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com

fb8b0dc1fbf021ab21db9264b48eb81d.png
版权声明 本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。 本文不可以以纸质出版为目的进行改编、摘抄。
### 如何在 Visual Studio Code 中配置和运行 Python 调试 #### 安装必要的组件 为了能够在 Visual Studio Code (VSCode) 中调试 Python 代码,需先确保已经安装了 Python 解释器以及 VSCodePython 插件[^1]。 #### 创建项目结构 建立一个新的工作区或打开现有的 Python 项目,在其中创建所需的源文件。这一步骤对于后续配置至关重要。 #### 设置 launch.json 文件 通过点击左侧活动栏中的调试图标,再点击齿轮图标来生成 `.vscode/launch.json` 配置文件。此 JSON 文件定义了一系列用于控制调试行为的参数,例如要启动哪个程序、传递哪些命令行参数等。 ```json { "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" } ] } ``` 上述 `launch.json` 示例展示了最基本的配置项——它指示 VSCode 执行当前编辑窗口内的脚本,并将输出重定向到集成终端中显示。 #### 添加断点与开始调试 可以在想要暂停执行的地方简单地点击行号旁边的空白区域以设置断点;当满足特定条件时,这些标记会使程序停止以便进一步分析。准备好之后按下 F5 键或者选择顶部菜单里的绿色播放按钮即可触发调试过程[^2]。 一旦进入调试模式,开发者可以利用 Debug Console 来评估表达式、查看局部变量的状态以及其他有用的信息。此外还支持逐步执行语句(`Step Over`)、深入函数内部(`Step Into`)等功能,帮助更细致地理解应用程序的工作原理。 #### 远程调试选项 除了本地开发外,还可以针对远程服务器上的应用进行调试操作。只需按照官方文档说明调整相应的连接属性和其他必要设定就能实现跨平台协作开发的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值