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跳过去,跳到下一个断点,若没有下一个断点,则直接跑完程序。

示例演示

上面的基础概念明白了以后,直接用图片示例演示下:

  1. 设置初步断点

  1. F7 进入函数

  1. F8 单步调试,往下执行代码

继续 F8 单步调试,往下执行代码:

继续 F8 单步调,试往下执行代码:

继续 F8 单步调试,试往下执行代码:

  1. 看够了循环,想直接看最终 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 的调试功能相关推荐

  1. pycharm Debug调试

    竖栏 横栏 另外:debug调试时使用参数 把参数全部输入进入就可以了 新手必会,pycharm的调试功能(史上最详篇) - 知乎新手必会,pycharm的调试功能(史上最详篇)前言Debug调试,是 ...

  2. pycharm 远程调试图文_Pycharm配置远程调试的图文步骤

    Pycharm配置远程调试方法总结 动机 一些bug由于本地环境和线上环境的不一致可能导致本地无法复现 本地依赖和线上依赖版本不一致也可以导致一些问题 有时一些bug跟数据相关,本地数据无法和线上数据 ...

  3. 使用Python控制1602液晶屏实时显示时间(附PyCharm远程调试)

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 本文介绍一下UP板的GPIO资源使用,以及一个使用Python演示一个简单的demo. 本文使用Markdown写成,为获得更好的 ...

  4. pycharm 调试_把xlwings盘顺溜:xlwings连接到Pycharm进行调试,以及xlwings转换器等的使用...

    说明:仅限windows平台 目录: 零, xlwings能做什么 一, 如何安装xlwings 二,xlwings连接Pycharm调试器 三, xlwings UDFs 编程的高级技巧 四. 使用 ...

  5. pycharm远程调试python_使用PyCharm进行Python远程调试

    背景描述 在机房中,服务器通过ADB与多台Android设备相连接,并通过Python应用程序(QMSInterceptor)对Android设备进行任务调度. 在开发环境中对QMSIntercept ...

  6. 连接远程电脑主机,pycharm远程调试代码方法

    1.首先,确保你的电脑和远程主机在一个局域网中(比如你电脑的远程主机都连接了公司内网,或者是校园网) 2.知道远程主机的ip地址,和主机用户的账户名和密码. 3.可以使用任何SSH工具,这里用Pych ...

  7. 【Pycharm好用功能】

    Pycharm好用功能 Pycharm 是 Jetbrains 的一款产品,是 Python 的IDE之一 常用快捷键的查询和配置:Settings -> Keymap Ctrl+D:复制当前行 ...

  8. 教女朋友学Python3-如何使用 Pycharm 进行调试

    2018/06/27 星期三 教女朋友学Python3-如何使用 Pycharm 进行调试 程序调试可以帮助我们自己快速的找到问题所在,程序写完之后,如果没有出现什么问题这几乎是「不存在」的. 通常当 ...

  9. pycharm 怎么调试html,pycharm怎么调试程序

    PyCharm调试程序,cmd中输入的变量怎么设置 PyCharm调试程序,cmd中输入的变量的设置方法 CMD dos定义变量,DOS下也只有环境变量可以用: SET [variable=[stri ...

  10. 【转载】pycharm远程调试配置

    pycharm远程调试配置https://www.cnblogs.com/liangjiongyao/p/8794324.html

最新文章

  1. C++中mutable、volatile关键字
  2. 二叉排序树(BST)构造与应用
  3. 【Android应用保护技术探索之路系列】之一:Android应用保护技术开篇
  4. java虚拟机学习-JVM调优总结-新一代的垃圾回收算法(11)
  5. ffmpeg解码流程 turorial5详解
  6. python代码加密 混淆_Python程序的混淆和加密
  7. 【codevs1993】草地排水,网络流入门(dinic+ispa)
  8. 【阅读】《点石成金:访客至上的网页设计秘籍》读书笔记
  9. 第三十九讲:tapestry 页面加载等待过程(ProgressiveDisplay)组件
  10. 解决DEFINE_string(result_path, result, Path for results) NameError:name 'os' is not defined
  11. TensorFlow中的通信机制——Rendezvous(二)gRPC传输
  12. PHP——简单留言板
  13. linux batchUtil批量运维工具
  14. 被反爬虫搞到心态崩溃
  15. java的string的intern_java String的intern()方法
  16. 深度学习推荐系统_深度推荐系统
  17. 计应121--实训一【李智飞(27号)--李阳持(26号)--胡俊琛(13号)--曹吉(2号)】
  18. 僵尸网络新世界:摄像头的背叛和战争
  19. Cris 的Python日记(四):Python 数据结构之序列和列表
  20. JS中的arguements到底是个啥?

热门文章

  1. [golang] 导入 go-sqlite3 报错解决方法
  2. Restarting ..Terminated
  3. 投 资 网 站 建 设 方 案
  4. C语言经典实例006:输出一个正方形
  5. 使用内核模块添加系统调用
  6. 巧用python求解逻辑题,特简单!
  7. 网路连接配置和DNS服务?解决无线网卡连接WIFI问题(硬件和驱动没问题)?
  8. 奇异值分解(SVD)(2)
  9. W33 - 999、Web站点安全监控
  10. Python3 字符串小练习