论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
Python程序员Visual Studio Code指南5调试
Python程序员Visual Studio Code指南5调试
涛声依旧在
金牌会员
|
2024-5-17 04:33:58
|
显示全部楼层
|
阅读模式
楼主
主题
851
|
帖子
851
|
积分
2553
5 调试
当运行程序时终端输出错误时,可以参考编辑器中的"题目"面板来办理碰到的题目。不过,并非全部错误都会导致错误。可能出现的情况是,程序执行成功,但输出结果与预期不同。出现这种情况时,下一步就是找出程序中的错误。这个过程被称为调试。
您可以实验通过注释代码行(从而克制代码块运行)、添加更多打印语句以在代码块执行后输出,或修改程序中的行来定位和办理题目。虽然每种方法都能帮助你找出错误和可能的修复方法,但这一过程服从很低。
Visual Studio Code有内置调试器,它的功能通过Python扩展得到了进一步扩展。虽然调试器可以帮助您辨认和修复错误,但您仍有责任辨认错误可能出如今代码的哪个位置。一旦你确定了错误的潜在位置,就可以使用调试器来帮助你跟踪程序的执行状态。
5.1 启动调试
要让调试器在执行过程中暂停,必须在代码的某一行设置断点。只要你想检查程序的运行状态,然后逐行检查代码,就可以设置断点。在 Visual Studio 代码中,断点会以红点的形式出如今编辑器空缺处。当调试会话开始时,调试器会执行到断点为止的全部代码行,并高亮显示要执行的下一行。(如果是步进操作,则例外,这将在背面的 "调试下令 "一节中表明)。
要添加断点,请将鼠标悬停在当前代码行的编辑器边框上,然后单击以添加断点。大概,使用键盘快捷键F9来添加当前代码行。要移除断点,请在编辑器空缺处选择断点,或再次按F9键。也可以在顶部菜单中选择运行,然后选择移除全部断点,从而移除全部断点。
你可以在会话期间暂停调试器的任何位置调用debugypy.breakpoint()来强制设置断点。如果要强制设置断点,必须在代码中导入debuypy。调用后,调试器会克制下一行代码。这种方法会在程序中硬编码断点。如果你有一些异步的回调函数,而你又不想用其他断点来设置、清除、启用或禁用它们,那么这种方法可能会很有效。通过对几个断点举行硬编码,就能在回调函数发生时捕捉到它们。
您可以通过以下方式启动调试会话:
菜单: 选择运行 ➪ 启动调试。
键盘快捷键: 按 F5。
运行视图: 单击运行和调试
运行视图: 单击 "开始调试"(在调试会话启动后出现)
编辑器在调试会话期间的行为由调试配置控制。调试配置是调试器功能的设置列表。Python 扩展提供了几种配置,稍后将在 "启动配置 "中探讨。本章练习中出现提示时,点击 Python 文件配置,调试当前活动的 Python 文件。
启动调试会话后,会打开运行视图。运行视图用于管理调试会话。当调试会话处于活动状态时,"运行 视图中的面板会根据正在执行的内容动态变化。
当代码中添加断点时,断点面板会将模块名称(如times_two.py)及其相应的断点行添加到列表中。目前times_two.py 中有两个断点,一个在第4行,另一个在第6行。在断点面板中选择其中一个断点,编辑器就会高亮显示该断点。
假设你在程序中设置了多个断点。在调试时,你决定在会话中只选择一些断点,这样就不必在每个断点都暂停调试器了。移除不需要的断点会删除断点,如果你打算在后续调试会话中保存断点,这可能不是你的本意。相反,你可以禁用断点。在 "断点"面板中,取消选中断点旁边的方框即可禁用断点。大概,你也可以右键单击断点,然后单击禁用断点。如果想一次性禁用全部断点,可以单击"停用断点"按钮。不过,如果您想删除全部断点,请单击"删除断点"按钮。删除全部断点有助于确保清除程序中设置的全部断点。
调试器运行时,变量的当前状态会反映在变量面板中。变量面板将变量分为局部和全局范围。
在继续调试的过程中,请注意面板中变量的变化情况。虽然变量会随着程序的执行而添补,但变量值有可能会产生错误,从而导致代码克制执行。如果你发现换一个值就能继续执行程序,你可以在变量面板中更改该值。要更改数值,请选中变量并按Enter键。输入新变量后,再按一次Enter键,将修改后的值保存到程序状态中。
5.2 调试下令
除运行视图外,编辑器中还会出现调试工具栏(见图 5.9)。调试工具栏提供了对这些调试下令的快速访问:
A—Continue (F5)
B—Step Over (F10)
C—Step Into (F11)
D—Step Out (Shift+F11)
E—Restart (Shift+Cmd/Ctrl+F5)
F—Stop (Shift+F5)
调试下令是一起工作的,而不是独立的;也就是说,你通常要使用多种下令的组合来调试不同的代码行。
除调试工具栏下令外,编辑器右键上下文菜单中还提供了其他下令。这些功能包括
添加内联断点(Add Inline Breakpoint)-在代码中添加断点,特别是在光标下的代码中。这对单个语句中的复合表达式非常有效,因为您希望在表达式的特定部分断开。大概,您可以导航到运行 ➪ 新断点 ➪ 内联断点,大概使用键盘快捷键 Shift+F9。
运行到光标(Run to Cursor)-运行一段代码而不设置另一个断点。
跳转到光标(Jump to Cursor)-跳转代码行或返回并重复代码行。
5.2.1 Continue
当调试器停在某个断点时,单击"继续(Continue)"会运行该断点后的全部代码,直到下一个断点或程序结束。
5.2.2 Step Over
Step Over下令运行调试器当前暂停的代码行,然后自动暂停到下一行,无需另设断点。如果当前行是函数调用,调试器将运行整个函数,然后在函数调用后的下一行暂停。从本质上讲,Step Over下令是在当前范围内逐行举行调试。
试试看 运行调试器,逐行查看代码。注意,当调试器运行到 times_two() 函数定义处时,调试器的下一步是 print() 语句。
5.2.3 Step Into
当调试器在函数处暂停时,Step Into 下令会进入函数作用域。在这里,你可以查看函数作用域内的每一行,还能进入其他函数调用。
5.2.4 Step Out
如果发现自己想从函数内部退出到调用该函数的作用域,可以使用Step Out下令。
5.2.5 克制
在调试会话期间,可以使用Stop下令克制全部执行。克制会话会克制调试器,但不会结束程序。如果在调试会话期间发现了程序中的错误,并得出结论:如果继续执行,可能会产生影响程序的副作用,例如覆盖错误的文件。在这种情况下,请选择克制下令退出调试器。
5.2.5 重新启动
在调试和纠正程序中的错误时,你往往不想继续在当前(通常是错误的)状态下运行程序。这时,你需要克制执行并重新启动调试程序。重启(Restart)下令可以方便地克制调试器,保存当前文件,然后用最近的修改重新启动调试器。
参考资料
软件测试精品书籍文档下载持续更新
https://github.com/china-testing/python-testing-examples
请点赞,谢谢!
本文涉及的python测试开辟库
谢谢点赞!
https://github.com/china-testing/python_cn_resouce
python精品书籍下载
https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
Linux精品书籍下载
https://www.cnblogs.com/testing-/p/17438558.html
5.3 调用堆栈
模块及其函数调用被称为框架。帧相互堆叠,当函数返回时,相应的帧会从堆栈中清除。以times_two.py程序为例,模块框架位于栈的底部,而times_two()函数框架位于栈的顶部。如果times_two()函数举行函数调用,被调用的函数将位于栈顶。调用栈自己被称为调用栈。
调试视图中的调用栈面板显示了导致当前执行点的整个函数调用链。调用栈面板列出了正在调试的文件和文件中正在运行的行。如果调用经过项目中的其他文件,调用堆栈尤其有效,因为调用堆栈会记录你在调试链中的位置。
此外,如果处于断点处,可以选择调用堆栈中的某一帧,变量面板会显示堆栈中该断点处的程序状态。这对于通过堆栈和生成该值的全部代码追溯错误值的源头非常有效。
逐行查看代码,直到调用times_two()函数。进入函数并注意调用堆栈。如今,times_two()框架已添加到调用堆栈中
调试器完成函数调用并返回总数后,times_two()框架将从调用栈面板中清除。
5.4 条件断点(Logpoints)
你可以配置断点,使其在特定条件为真时触发(条件断点),或在断点被触发一定次数后触发。
当你为断点指定的表达式求值为真时,条件断点就会断开。例如,如果要调试数据库中的数据,可以在出现特定记录时中断。
命中计数使调试器能够执行到指定的出现次数。Python扩展支持的命中计数是前面带有 、>、>=、 2 时的 elif 语句中,i == 1 似乎有题目。可以以为程序中的错误就出在这里。
在i == 1处设置断点并启动调试器。出现提示时,输入3。
调试器在断点处暂停后,查看变量面板,确认变量是否反映了适当的值。
Step over到 while 循环的最后一行
注意到尽管已经生成了所需的斐波纳契数,循环仍开始了另一次迭代。继续跳过 while 循环,程序会生成相同的斐波纳契数,而且 while 循环从未中断过。该程序是一个无限循环。
启动调试器并打开调试控制台
调试器在断点处克制后,输入i+=1 以递增 i 的值。
在变量面板中,i 的值从 1 变为 2。 如今,继续调试程序时,执行代码的其余部分,只生成三个斐波那契数字。
5.7 启动配置
启动配置可让你配置不同调试会话的运行方式,并将这些配置长期保存在 launch.json 文件中。launch.json 文件保存在项目根目次下的 .vscode 文件夹中,也可在用户或工作区设置中访问。要举行调试,launch.json 文件中至少需要一个配置。
要创建 launch.json 文件,请在运行视图中单击创建 launch.json 文件。大概,你也可以从 "运行 "菜单中选择 "运行" ➪ "打开配置 "来创建 launch.json 文件。
Visual Studio Code会从下令面板打开配置菜单,提示您选择默认配置作为新配置的启动模板。
Python 扩展提供了以下默认配置:
Python 文件-调试当前活动的 Python 文件。
模块-通过使用 -m 调用 Python 模块来调试该模块。
远程连接-为调试服务器监听提供主机名和端标语。
使用进程 ID 附加-当运行在 Visual Studio Code 之外启动的 Python 脚本时,将调试器附加到非调试模式下的 Python 进程。附加到进程需要进程 ID。
该扩展还为网络应用程序提供了三种默认配置:
Django
Flask
Pyramid
要了解有关调试Django应用程序的更多信息,请参阅代码.visualstudio.com/docs/python/tutorial-django#_explore-the-debugger 的Django教程。要了解有关调试 Flask 应用程序的更多信息,请参阅位于 code.visualstudio.com/docs/python/tutorial-flask#_run-the-app-in-the-debugger 的 Flask 教程。
选择启动模板后,launch.json文件将添加到 .vscode 文件夹中,并在编辑器中打开。
编辑 launch.json 文件时,IntelliSense 会提示(Ctrl+空格键)可用属性列表。您也可以对文件中的全部属性使用悬停帮助。由于不同语言的属性可能不同,使用悬停帮助可以了解有关属性的更多信息。
launch.json 文件可以包含任意数量的配置。要添加配置,请从运行菜单或 launch.json 编辑器中单击添加配置。
这里提供了 launch.json 文件可用的核心设置:
name -为出如今 Visual Studio 代码下拉列表中的调试配置提供名称。
type-指定要使用的调试器类型;对于 Python 代码,将其设置为 python。
request-指定开始调试的模式:
launch: 在程序中指定的文件上启动调试器。
attach(附加): 将调试器附加到远程服务器上已经运行的进程上,该进程不能随意重启。当地需要与程序中指定的相同的源代码文件。
program-提供 Python 程序入口模块(启动文件)的完整路径。默认配置中经常使用的 ${file} 值,会使用编辑器中的当前活动文件。通过指定启动文件,可以确保无论打开哪个文件,都能以相同的入口点启动程序。
python- 指向用于调试的 Python 表明器的完整路径。如果未指定,则默认使用 python.pythonPath 设置中指定的表明器,相当于使用 ${config:python.pythonPath} 值。要使用其他表明器,请在调试配置的 python 属性中指定其路径。
args-指定通报给程序的参数。参数字符串中以空格分隔的每个元素都应包含在引号中。
cwd-指定调试器的当前工作目次,它是代码中使用的任何相对路径的基本文件夹。如果省略,当前工作目次默以为${workspaceFolder},即编辑器中打开的文件夹。大概,也可以使用在每个平台上定义的自定义环境变量,其中包含要使用的 Python 表明器的完整路径,这样就不需要额外的文件夹路径了。
其他配置请访问 code.visualstudio.com/docs/python/debugging#_set-configuration-options。还有一些非Python 特有的附加属性,可以在 launch.json 中设置。要了解更多信息,请参阅 code.visualstudio.com/docs/editor/debugging#_launchjson-attributes。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
涛声依旧在
金牌会员
这个人很懒什么都没写!
楼主热帖
MySQL基本SQL语句之高级操作
maven配置步骤及问题
Juc并发编程12——2万字深入源码:线程 ...
史上最全MongoDB之部署篇
IOS OpenGL ES GPUImage 图像黑白色调 ...
【云原生】裸金属架构之服务器安装VMWa ...
一文读懂K-Means原理与Python实现 ...
Flink-基于 DataStream API 实现欺诈检 ...
大数据ETL开发之图解Kettle工具(入门 ...
阿里云申请免费证书、域名解析以及ngin ...
标签云
存储
服务器
快速回复
返回顶部
返回列表