PyCharm 的调试功能
Debug调试,是对于学习编程人员来说是一项重要的技能。只有当你学会 debug 了以后,才可以正确的知道程序的走向流程是如何的,DEBUG是排除程序故障的意思。debug 则是通过工具来对代码进行调试,进而一步步找出程序中出现 bug 的位置,也就是程序中具体错误代码的位置。
Pycharm中的debug模式
首先,还是用示例说话,我们先写一段简短的代码,来帮助我们完成今天要讲的内容。
初学者可能没见过 for 循环中的下划线‘_ ’,在 Python 中是占位符的意思,因为只是单纯的循环两次而已,并不用到它的循环结果,所有用占位符占位,最终显然可得result 会输出 6 。
在 pycharm 中,如何开启 debug 调试,一共有4种进入的方法,如下:
方法一:
方法二:
方法三:(以选中当前文件也可直接按Shift + F9)
方法四:
单纯的进入 debug 模式,你会发现,与正常的run去运行程序没有差异。差异就是pycharm的控制台部分,从run跑到了debug显示。
接下来要讲的,才是debug中的重中之重,即断点调试!
debug 的断点调试
断点调试,英文叫breakpoint,简单点讲,断点调试其实就是在程序自动运行的过程中,在代码某一处打上了断点,当程序跑到你设置的断点位置处,则会中断下来,此时你可以看到之前运行过的所有程序变量。
来继续刚才的演示,pycharm 中如何设置断点。
点击前:
点击后:
点击代码左边空白处设置断点,皮一下,比如给每行代码都设置上断点:
设置完断点后,开启 debug 调试模式运行下,看到结果:
我们先来从控制台每个按钮讲起:
如果要是忘记中文意思的话,没有关系,鼠标指到按钮处,悬浮一会儿,会有英文提示的,如果是中文版的Pycharm会有中文的提示。
继续再来说横排按钮:
其中,横排最重要,经常用到的按钮,来解释一下,自己鼠标悬浮去看英文或中文即可:
步过 step over (F8快捷键):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。 在不存在子函数的情况下是和step into效果一样的。简单的说就是,程序代码越过子函数,但子函数会执行,且不进入。
步入 step into (F7快捷键):在单步执行时,遇到子函数就进入并且继续单步执行,会进入调用的函数内部,有的会跳到源代码里面去执行。
步入我的代码 step into my code (Alt+Shift+F7快捷键):在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到源码中。
步出 step out (Shift+F8快捷键):假如进入了一个函数体中,你看了两行代码,不想看了,跳出当前函数体内,返回到调用此函数的地方,即使用此功能即可。
恢复程序 Resume program (F9快捷键):继续恢复程序,直接运行到下一断点处。F9为重启debug、从此断点(或起点)执行到下个断点。
以上5个功能,就是最常用的功能,★一般操作步骤就是,设置好断点,debug运行,然后用F8 单步调试,遇到想进入的函数用F7 进去,进去函数后,可以按F8单步执行,也可以按F7(可能会进入源代码)单步执行,还可以按Alt+Shift+F8(不会进入源代码)单步执行,想出来在用shift + F8(跳出函数体),想跳过不想看的地方,直接设置下一个断点,然后用F9跳过去,跳到下一个断点,若没有下一个断点,则直接跑完程序。
示例演示
上面的基础概念明白了以后,直接用图片示例演示下:
- 设置初步断点
- F7 进入函数
- F8 单步调试,往下执行代码
继续 F8 单步调试,往下执行代码:
继续 F8 单步调,试往下执行代码:
继续 F8 单步调试,试往下执行代码:
- 看够了循环,想直接看最终 result 加完的结果,就在结果处打断点,直接F9跳到下一个断点
以上就是断点调试的全过程。
学完后是不是顿时明白了断点调试的重要性,使用断点可以快速帮助我们理解程序中的各处逻辑!
结语
看到这里,基本的调试,,已经可以上手使用了!但是要拓展的点还有很多,比如pycharm为什么在工程性的程序中颇受欢迎,因为pycharm的功能实在是太强大了。
Pycharm还有一些拓展功能,大家可以去慕课网上搜下IntelliJ IDEA神器使用技巧 ,老师讲的非常详细,涉及到许多技巧,idea和pycharm是一家公司出的,所以使用上的技巧也是一样的,可以融会贯通。
慕课网课程具体地址(免费课程):https://www.imooc.com/learn/924
就算没有debug,如果借助 Python 中的 print() 函数依然可以达到想要的结果,最笨的方法不就是一步步的 print 打印出你想要的结果吗!然而笨方法往往使人印象深刻呢!总而言之,学会调试很重要!
总结:Shift+F9可进入调试
F7 步入(step into):会进入函数,遇到想进入调试的函数可以按F7,单步执行,一步步过,有可能进入源代码。
F8 步过 (单步step over):不会进入函数,把函数当成一步,可以先按F7进入函数,在按F8在
函数内一步步过。
Alt+Shift+F7步入我的代码(step into mycode):会进入函数,单步执行一步步过,但不会进
入源代码。可以理解为F8和F7的综合,没遇到函数和F8一样,遇到函数会自动进入函数内部,和F8时
按F7类似。
Shift+F8步出(step out):比如已经按F7步入一个函数体中了,在函数体内按F8一步步过,但
想直接跳出函数体可以按Shift+F8。
F9恢复程序(resume program):恢复程序,继续执行,直接跳到下一个断点,若没有下一个断
点了,那就直接跑完程序。
前面5个比较经常使用,除此之外还有:
Ctrl+F5 :在debug模式下时是重新debug运行此文件的意思。在程序在没有运行的时候,
按Ctrl +F5可以起到运行程序的作用,此时相当于按快捷键Shift + F10的作用。
Ctrl+F2 :停止当前文件的调试,停止当前的debug模式,关闭运行的当前程序。
Ctrl+Shift+F8 :查看所有设置的断点。
启用断点:让所有的断点都失效,设置的断点有红色变成白色。
Alt+F8 :计算机表达式,pycharm的高级用法。
Layout settings :恢复控制台布局。
PyCharm 的调试功能相关推荐
- pycharm Debug调试
竖栏 横栏 另外:debug调试时使用参数 把参数全部输入进入就可以了 新手必会,pycharm的调试功能(史上最详篇) - 知乎新手必会,pycharm的调试功能(史上最详篇)前言Debug调试,是 ...
- pycharm 远程调试图文_Pycharm配置远程调试的图文步骤
Pycharm配置远程调试方法总结 动机 一些bug由于本地环境和线上环境的不一致可能导致本地无法复现 本地依赖和线上依赖版本不一致也可以导致一些问题 有时一些bug跟数据相关,本地数据无法和线上数据 ...
- 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)
前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...
- pycharm 调试_把xlwings盘顺溜:xlwings连接到Pycharm进行调试,以及xlwings转换器等的使用...
说明:仅限windows平台 目录: 零, xlwings能做什么 一, 如何安装xlwings 二,xlwings连接Pycharm调试器 三, xlwings UDFs 编程的高级技巧 四. 使用 ...
- pycharm远程调试python_使用PyCharm进行Python远程调试
背景描述 在机房中,服务器通过ADB与多台Android设备相连接,并通过Python应用程序(QMSInterceptor)对Android设备进行任务调度. 在开发环境中对QMSIntercept ...
- 连接远程电脑主机,pycharm远程调试代码方法
1.首先,确保你的电脑和远程主机在一个局域网中(比如你电脑的远程主机都连接了公司内网,或者是校园网) 2.知道远程主机的ip地址,和主机用户的账户名和密码. 3.可以使用任何SSH工具,这里用Pych ...
- 【Pycharm好用功能】
Pycharm好用功能 Pycharm 是 Jetbrains 的一款产品,是 Python 的IDE之一 常用快捷键的查询和配置:Settings -> Keymap Ctrl+D:复制当前行 ...
- 教女朋友学Python3-如何使用 Pycharm 进行调试
2018/06/27 星期三 教女朋友学Python3-如何使用 Pycharm 进行调试 程序调试可以帮助我们自己快速的找到问题所在,程序写完之后,如果没有出现什么问题这几乎是「不存在」的. 通常当 ...
- pycharm 怎么调试html,pycharm怎么调试程序
PyCharm调试程序,cmd中输入的变量怎么设置 PyCharm调试程序,cmd中输入的变量的设置方法 CMD dos定义变量,DOS下也只有环境变量可以用: SET [variable=[stri ...
- 【转载】pycharm远程调试配置
pycharm远程调试配置https://www.cnblogs.com/liangjiongyao/p/8794324.html
最新文章
- C++中mutable、volatile关键字
- 二叉排序树(BST)构造与应用
- 【Android应用保护技术探索之路系列】之一:Android应用保护技术开篇
- java虚拟机学习-JVM调优总结-新一代的垃圾回收算法(11)
- ffmpeg解码流程 turorial5详解
- python代码加密 混淆_Python程序的混淆和加密
- 【codevs1993】草地排水,网络流入门(dinic+ispa)
- 【阅读】《点石成金:访客至上的网页设计秘籍》读书笔记
- 第三十九讲:tapestry 页面加载等待过程(ProgressiveDisplay)组件
- 解决DEFINE_string(result_path, result, Path for results) NameError:name 'os' is not defined
- TensorFlow中的通信机制——Rendezvous(二)gRPC传输
- PHP——简单留言板
- linux batchUtil批量运维工具
- 被反爬虫搞到心态崩溃
- java的string的intern_java String的intern()方法
- 深度学习推荐系统_深度推荐系统
- 计应121--实训一【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
- 僵尸网络新世界:摄像头的背叛和战争
- Cris 的Python日记(四):Python 数据结构之序列和列表
- JS中的arguements到底是个啥?