Pycharm调试

一、 关于debug的小故事

1937年,美国青年霍华德·艾肯找到IBM公司为其投资200万美元研制计算机,第一台成品艾肯把它取名为:马克1号(mark1),又叫“自动序列受控计算机”,从这时起IBM公司由生产制表机,肉铺磅秤,咖啡研磨机等乱七八糟玩意儿行业,正式跨进“计算机”领地。为马克1号编制程序的是哈佛的一位女数学家格蕾丝·霍珀,有一天,她在调试程序时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍珀诙谐的把程序故障统称为“臭虫(BUG)”,把排除程序故障叫DEBUG,而这奇怪的“称呼”,后来成为计算机领域的专业行话。从而debug意为排除程序故障的意思。

Debug调试,是一项学习编程人员的重要技能。只有当学会 debug 了以后,才可以正确的知道程序的走向流程是如何的,现在以下面一个简单的程序给大家介绍一下 Pycharm 中的 debug 功能!

以下面一个程序为例:

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

二、 debug 的断点调试

三、 四种方式开启debug调试

四、 调试几个按键的功能

`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 过去。

Python环境配置和IDE安装

> 因为种种原因,在跑项目的时候总是各种报错,尝试多种解决方案后无果,于是决定开启重装大法。 > 顺便重新记录一下自己的环境配置和安装过程...

Anaconda虚拟环境+pycharm

anaconda虚拟环境+pycharm 本文是帮助大一大二的本科生入门anaconda虚拟环境与pycharm,更好的配置项目所需环境。 首先我们需要搜索一些anaconda与pychar...

微信小程序与Django后端交互流程

运行 一台电脑上运行 后端使用 python manage.py runserver 8000(端口)命令 前端通过访问本地地址加上后端写好的接口与后端交互 接口:http...

Wagtail5.代码高亮

https://github.com/FlipperPA/wagtailcodeblock 在虚拟环境下输入pip install wagtailcodeblock -i https://mirrors.aliyun.com/pypi/simple 设置应...

Wagtail3. 引入Bootstrap 4,Font Awesome,页面布局优化

此部分属于通用内容,非 Wagtail 必需内容,是为了完善/优化基于 Wagtail 搭建的博客。 引入 Bootstrap 4 引入 Font Awesome 我用夸克网盘分享了「...

Wagtail:编辑models.py时遇到未导入的模块的解决方法

拿blog/models.py中的BlogPageGalleryImage类中的ImageChooserPanel函数为例, 如果没有导入对应的模块from wagtail.images.edit_handlers import ImageC...