【Python】程序断点调试

【Python】程序断点调试在基础编程课中 学生 可能 用不着断点调试 但断点调试用教师重要的教学工具 费尽口舌说不清楚的循环 递归 用断点调试 清清楚楚 明明白白 本文描述 Visual Studio Code 的断点调试方法 帮助读者理解循环执行过程

大家好,欢迎来到IT知识分享网。

在基础编程课中,学生“可能”用不着断点调试,但断点调试用教师重要的教学工具,费尽口舌说不清楚的循环、递归,用断点调试,清清楚楚,明明白白。

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

知识产权协议

允许以教育/培训为目的向学生或受众进行免费引用,展示或者讲述,无须取得作者同意。

不允许以电子/纸质出版为目的进行摘抄或改编。

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。如果在相同位置再次单击,断点便会消失。在同一个程序中,断点可以打很多个。

【Python】程序断点调试

3. 开始调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

4. 单步前进 – Step Into

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

【Python】程序断点调试

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

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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

【Python】程序断点调试

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用于在调试过程中避免过分深入函数或者循环内部。

本案例节选自作者编写的教材及配套实验指导书。

《C++编程基础及应用》(高等教育出版社,出版过程中)

《Python编程基础及应用》,高等教育出版社

《Python编程基础及应用实验教程》,高等教育出版社

【Python】程序断点调试

高校教师同行如果期望索取样书,教学支持资料,加群,请私信作者,联系时请提供学校及个人姓名为盼,各高校在读学生勿扰为谢。

青少年读者们如果期望系统性地学习Python及C/C++程序设计语言,欢迎尝试下述今日头条(西瓜)免费视频课程。

C/C++从入门到放弃(重庆大学现场版)

Python编程基础及应用(重庆大学现场版)

【Python】程序断点调试

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/89173.html

(0)
上一篇 2026-04-05 13:45
下一篇 2025-03-19 16:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信