pycharm怎么逐步调试_pycharm的debug失效

pycharm怎么逐步调试_pycharm的debug失效前言Debug调试,是一项学习编程人员的重要技能。只有当你学会debug了以后,才可以正确的知道程序的走向流程是如何的,今天就来给大家介绍一下pycharm中的debug功能!debug的前世在正式讲解之前,先来了解下debug这个词的由来,就像我们初学Python时,先要了解下它历史的由来。1937年,美国青年霍华德·艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

Debug调试,是一项学习编程人员的重要技能。只有当你学会 debug 了以后,才可以正确的知道程序的走向流程是如何的,今天就来给大家介绍一下 pycharm 中的 debug 功能!

debug的前世

在正式讲解之前,先来了解下 debug 这个词的由来,就像我们初学Python 时,先要了解下它历史的由来。

1937年,美国青年霍华德·艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(mark1),又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机,肉铺磅秤,咖啡研磨机等乱七八糟玩意儿行业,正式跨进“计算机”领地。

为马克1号编制程序的是哈佛的一位女数学家葛丽斯·莫雷·霍波,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。从而debug意为排除程序故障的意思。

百度百科

看了上面的小故事,debug 一词的由来,是由 bug 词得来的,bug 是臭虫的意思,debug 就是解决臭虫。

在如今的互联网时代,多少你肯定听说过 bug 这个词,比如什么什么软件又出 bug 了!说的就是软件在使用的过程中,程序出现了一些错误。故称之为 bug。

**而 debug 则是通过工具来对代码进行调试,一步步找出程序中出现 bug 的位置,也就是程序中具体错误代码的位置。**就像故事中所说,debug过程就是在解决虫子一样。。

pycharm 中的 debug 模式

来步入今天的正题。

首先,还是用示例说话,我们书写一段简短的代码,来帮我们完成今天要讲的内容。

def sum_demo(x, y): for _ in range(2): x += 1 y += 1 result = x + y return resultif __name__ == '__main__': result = sum_demo(1, 1) print(result)

肉眼识别下,猜猜结果是多少呢?初学者可能没见过 for 循环中的下划线,在 Python 中是占位符的意思,因为单纯的循环两次而已,并不用到它的循环结果。最终 result 会输出 6 。

在 pycharm 中,如何开启 debug 调试,一共有三种进入的方法,如下(下图均可点开放大观看):

方法一:

f4b73bfd5f7cd1ffafda1af9dbc0759f.png

方法二:

abe1cc03227bb1c1583a55a70ab8ff37.png

方法三:

765a79a49bd626fe0c5b03eb1c5cef91.png

还有一种方法,就是 pycharm 导航栏处,有个run,点开以后即可看到 debug ,这里就不截图演示了。

单纯的进入 debug 模式,你会发现,与正常的 run 去运行程序没有差异。差异就是 pycharm 的控制台部分,从 run 跑到了 debug 显示。

00a47a6a48c4d59219be30aced9b6d77.png

接下来要讲的,才是 debug 中的重中之重,即断点调试!

debug 的断点调试

断点调试,英文 breakpoint。用大白话来解释下,断点调试其实就是在程序自动运行的过程中,你在代码某一处打上了断点,当程序跑到你设置的断点位置处,则会中断下来,此时你可以看到之前运行过的所有程序变量。

来继续刚才的演示,pycharm 中如何设置断点。

点击前:

18bd9639b0437774a4d4b1f8e25a61d9.png

点击后,皮一下,每行代码都设置上断点:

c2d5bd79fdaafb07f3adb5d27c7a1681.png

设置完断点后,开启 debug 调试模式运行下,看到结果:

99a7a773931743f48d057efc2561575b.png

看到了这么多新摆设,是不是有点怕了!不怕,咱们先来从控制台每个按钮讲起:

b6148564e58f6b67c156524f16513d6f.png

如果要是忘记中文意思的话,没有关系,鼠标指到按钮处,悬浮一会儿,会有英文提示的。继续再来说横排按钮:

5c4a226ac0b7a19d93a77f8a6f1b4afa.png

其中,横排最重要,经常用到的按钮,来解释一下,自己鼠标悬浮去看英文即可:

step over(F8快捷键):在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在不存在子函数的情况下是和step into效果一样的。简单的说就是,程序代码越过子函数,但子函数会执行,且不进入。

step into(F7快捷键):在单步执行时,遇到子函数就进入并且继续单步执行,有的会跳到源代码里面去执行。

step into my code(Alt+Shift+F7快捷键):在单步执行时,遇到子函数就进入并且继续单步执行,不会进入到源码中。

step out(Shift+F8快捷键):假如进入了一个函数体中,你看了两行代码,不想看了,跳出当前函数体内,返回到调用此函数的地方,即使用此功能即可。

Resume program(F9快捷键):继续恢复程序,直接运行到下一断点处。

以上四个功能,就是最常用的功能,一般操作步骤就是,设置好断点,debug运行,然后 F8 单步调试,遇到想进入的函数 F7 进去,想出来在 shift + F8,跳过不想看的地方,直接设置下一个断点,然后 F9 过去。

示例演示

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

1.设置初步断点

d2008ba5ce85ca25fe0e64920a9d2faa.png

2.F7 进入函数

7e8d95c7fbf01e40d5a8f2ec3d3122f3.png

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

1ee93b1885c09e56fd8281284612852e.png

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

54ada209eef1b197a495f4c681038f6d.png

继续 F8 单步调试:

4cfad95ecbe1b3124636674ad36efc90.png

继续 F8 单步调试:

481e6f4e298a79674ac7bc92c637f6de.png
10b46706f6599290dbc2b283f2148d78.png

4.看够了循环,想直接看最终 result 加完的结果,结果处打断点,直接 F9

4d11678baf5bf3a61b6cda2efc2e5dda.png

以上就是断点调试的全过程。看完之后,理解了吗~是不是顿时明白了断点调试的重要性,使用断点可以快速帮助我们理解程序中的各处逻辑!

结语

看到这里,基本的调试,相信你认真看完的话,已经可以上手使用了!但是要拓展的点还有很多,比如 pycharm 为什么在工程性的程序中颇受欢迎,因为它实在是太强大了。。。还有一些拓展功能,大家可以去慕课网上搜下IntelliJ IDEA神器使用技巧 ,老师讲的非常详细,涉及到许多技巧,idea和pycharm是一家公司出的,所以使用上的技巧也是一样的,可以融会贯通。

慕课网课程具体地址(免费课程):

https://www.imooc.com/learn/924

为什么在 Python 小课堂中,没有提前介绍这么重要的技巧,其实是有所顾虑的,前期学习中,笔者认为更多地精力应该放在学习本身上,而非工具上,就算没有debug,如果借助 Python 中的 print() 函数依然可以达到想要的结果,最笨的方法不就是一步步的 print 打印出你想要的结果吗!然而笨方法往往使人印象深刻呢!

希望本篇文章可以帮到正在初学的你,写程序的过程中,断点调试真的很重要!!欢迎点赞,评论,留言,收藏,转发哦!工具类教学最适合分享了!~

文章首发公众号,感兴趣欢迎关注:migezatan.(咪哥杂谈)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/174714.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • [ACM] POJ 1442 Black Box (堆,优先队列)

    [ACM] POJ 1442 Black Box (堆,优先队列)

  • 好用的php空间,推荐国内三个优质的免费PHP空间[通俗易懂]

    1.亿家免费国内PHP空间这是我见过最好的免费国内PHP空间了,这个BLOG就是由他的空间支撑的,所以你看到我这个空间的稳定,快速就代表着他们空间的优质了,推荐注册地址:www.e9china.net这个先要在他们论坛上发帖子,当你在论坛里的号升级后,就可以到相应版块去提交申请免费国内PHP空间了,具体多少级我记不得了,现在论坛改版本了,我都成新手上路了···这个免费国内PHP空间你得到后,不需要…

  • 手机cpu控制免root_cpu利用率低但是卡

    手机cpu控制免root_cpu利用率低但是卡想不想让CPU利用率展示成一首优美的旋律,就像弹琴一样。我的意思是,你想让系统以及task的CPU利用率是多少它就是多少,一切都是由你的程序自己来调制演奏。这需要一种自指机制。哈哈,完全可以,本文来演示,或者说,你可以把本文的内容看作一个戏弄运维人员的恶作剧。运维人员经常会遇到各种CPU高的问题,然后成群结队地去排查,想让队伍更大些吗?想让事情更诡异吗?我让你查,我让你查。哈哈。事先声明,若用本文描述的手段实施恶意行为,将会受到谴责,这并不是一个真正工程师该有的行为,更有辱手艺人的探索精神。

    2022年10月21日
  • [Python] ImportError: DLL load failed … 找不到指定的模块 此类问题解决方法

    [Python] ImportError: DLL load failed … 找不到指定的模块 此类问题解决方法最近升级Python项目,由Python2.7升级到Python3.8.3,项目使用了PySide2,对于较新的Python3.8.3,PySide2可能存在些许不兼容问题,环境配置完成后,出现一连串的ImportError:DLLloadfailed找不到指定模块对于很多Python开发者来说,这类问题最为头疼,不知道如何下手解决。我是在virtualenv虚拟环境下配置Python3.8.3的开发环境。OS:Windows7x64各种依赖安装完毕后

  • html的标签点击触发js函数的四种方法[通俗易懂]

    html的标签点击触发js函数的四种方法[通俗易懂] 方法1<a href="" onclick="funct()">我是a标签</a>方法2<a href="javascript:funct()">我是a标签</a>方法3<a id=’funct’ >我是a标签</a> 方法4然后使用jq的方法

  • CSS常用颜色代码对照表

    CSS常用颜色代码对照表FFFFFF#DDDDDD#AAAAAA#888888#666666#444444#000000#FFB7DD#FF88C2#FF44AA #FF0088 #C10066 #A20055 #8C0044 #FFCCCC#FF8888#FF3333 

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号