https://www.xin3721.com/eschool/pythonxin3721/

第2步:调试您的第一个Python应用程序

找出问题的根源

PyCharm报告运行时错误:a ZeroDivisionError。深入研究一下代码,找出问题所在。这里可以使用PyCharm调试器来查看代码中发生了什么。要开始调试,您必须先设置一些断点。要创建断点,只需单击左侧gutter:

接下来,单击左侧gutter中的播放图标,在main旁边,然后选择Debug 'Car'。 PyCharm启动调试会话并显示调试工具窗口。

在Console选项中,输入S:

如您所见,断点标记变为蓝色。这意味着已经达到了断点; 请注意,此时尚未执行突出显示的代码行。

单击播放图标以恢复脚本执行。现在另一个断点也出现了:默认情况下,PyCharm将停止代码中未捕获的任何异常,并且它将显示带闪电的断点图标。

控制台还会显示错误消息。您还可以在调试器中看到该值self.time等于零:

Surrounding code

为避免再次遇到同样的问题,现在添加一个if语句来检查时间是否等于零。为此,在方法average_speed中选择语句return self.odometer / self.time,然后按Ctrl + Alt + T(Code | Surround with):

PyCharm创建一个stub if构造,让你完成填充正确内容的任务。编辑后,得到以下内容:

详细调试

“调试”工具窗口显示框架, 变量和监视的专用窗格以及控制台,其中显示所有输入和输出信息。如果希望控制台始终可见,可以将其拖动到PyCharm窗口的一个边缘。

Stepping

如果您希望逐行查看代码的作用,则无需在每一行上设置断点,您可以单步执行代码。看一下示例程序是什么样子:单击播放图标,转到控制台询问汽车的平均速度(类型'S'),可以看到达到断点。这时可以使用Stepping工具栏按钮选择想要在下一行停止的行。

例如,单击Step Over 按钮并看到蓝色标记移动到下一行代码:

如果单击Step Into按钮,您将看到action = input("What should I do? [A]ccelerate, [B]rake, " "show [O]dometer, or show average [S]peed?").upper() 调试器进入文件parse.py:

但是,如果继续使用Step Over 按钮,您将看到您的应用程序只是传递到下一个循环:

如果您想专注于自己的代码,请使用Step Into My Code按钮 - 这样您就可以避免进入库类。

Watching

PyCharm允许您观察任何变量。只需要单击Watches选项的工具栏中的+,然后输入你想要观看的变量的名称-将其设置为 my_car.time。请注意,此处可以使用代码完成:

首先,您看到时间等于nil - 这意味着该变量尚未定义:

但是,当程序执行继续到定义变量的作用域时,监视器将获得以下视图:

内联调试

您可能已经注意到另一个PyCharm功能,可以轻松查看代码正在执行的操作: 内联调试器。一旦你遇到任何断点,PyCharm就会在编辑器中向你显示许多变量的值:

默认情况下启用此内联调试功能。如果您没有看到内联调试值,请使用调试工具窗口中的设置图标检查它是否已启用::

评估表达式

最后,您可以随时评估任何表达式。

实际上,你可以用watch看到同样的东西。使用评估表达式,您可以执行使用watch无法执行的操作:您可以更改内容。例如,如果输入所需的里程表值50,然后继续单步执行脚本,您将获得以下信息:

python调试器入门教程_PyCharm入门第一步(二)——调试第一个Python应用|python基础教程|python入门|python教程...相关推荐

  1. linux的静态编译elf无法调试,[翻译]自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB...

    自己动手编写一个Linux调试器系列之4 ELF文件格式与DWARF调试格式 by lantie@15PB 在上一节中,你已经听说了DWARF调试格式,它是程序的调试信息,是一种可以更好理解源码的方式 ...

  2. Python开发第一步:如何制作一个简单的桌面应用

    Python开发第一步:如何制作一个简单的桌面应用 前言 大家好,我是baifagg, 一个热爱Python的编程爱好者. 今天我们来学习一下, 如何用Python制作一个简单的桌面应用程序. 虽然桌 ...

  3. 【Python】Python系列教程-- Python3 编程第一步(十八)

    文章目录 前言 打印字符串: 输出变量值: 定义变量并进行简单的数学运算 使用 for 循环打印数字 0 到 4: 根据条件输出不同的结果: end 关键字 前言 往期回顾: Python系列教程–P ...

  4. Python 深度学习架构实用指南:第一、二部分

    原文:Hands-On Deep Learning Architectures with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集] ...

  5. Python Web 深度学习实用指南:第一、二部分

    原文:Hands-On Python Deep Learning for the Web 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑 ...

  6. Python装饰器总结,带你几步跨越此坑!

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  7. 【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )

    文章目录 一.等待进程状态改变 二.detach 脱离进程调试 PTRACE_DETACH 三.调试中继续运行程序 PTRACE_CONT 一.等待进程状态改变 上一篇博客 [Android 逆向]代 ...

  8. python学习(三)scrapy爬虫框架(二)——创建一个scrapy爬虫

    在创建新的scrapy爬虫之前,我们需要先了解一下创建一个scrapy爬虫的基本步骤 第一步:确定要爬取的数据 以爬取豆瓣电影数据为例: 每部电影所要爬取的信息有: 片名:<头号玩家> 导 ...

  9. python同花顺交易接口_开启量化第一步!同花顺iFinD数据接口免费版简易操作教程...

    金融市场波动频繁,投资往往会夹杂非理性的情绪.而量化交易,旨在以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策略, ...

  10. python获取同花顺数据_开启量化第一步!同花顺iFinD数据接口免费版简易操作教程...

    金融市场波动频繁,投资往往会夹杂非理性的情绪.而量化交易,旨在以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种"大概率"事件以制定策略, ...

最新文章

  1. 华为手机的nfc是什么功能_华为手机NFC只用来乘车?这个功能还不会用,几千块手机亏了...
  2. 逆生长!小鼠「逆龄疗法」登Nature子刊,有望用于人类
  3. objective-C NSNotificationCenter (通知)的使用方法
  4. 30多年程序员生涯经验总结(成功源自于失败中的学习;失败则是因为容忍错误的横行)...
  5. mysql-Federated存储方式,远程表,相当于sql server的linked server
  6. 【One by One系列】IdentityServer4(二)使用Client Credentials保护API资源
  7. MySQL最早版本源码_MySQL旧版本升级为新版本
  8. 典型的 C++ 程序员成长经历
  9. 《Java技术》第一次作业
  10. 13天Java进阶笔记-day11-网络编程和NIO
  11. 两招让你成为很厉害的T型人才
  12. 会话技巧---英文单词
  13. 物联网 USN架构 和 M2M架构
  14. 布局阴影shadow的制作
  15. mysqli_connect(): (HY000/2002):
  16. 超级用户su没有权限修改所属
  17. 红队作业 | 信息收集工具汇总
  18. 老友记剧本台词全十季下载
  19. 人工神经网络算法与机器算法算两种算法吗
  20. codeMirror 使用教程

热门文章

  1. stateless_Spring Stateless State Security第3部分:JWT +社会认证
  2. jface_使用JFace Viewer延迟获取模型元素
  3. 将旧对象装箱可自动关闭
  4. java 绑定微信号开发_Java开发中的更多常见危险信号
  5. ug弹簧可变性装配_弹簧可配置魔术
  6. jaas_受JAAS保护的JAX-RS端点
  7. JDK 10的摘要Javadoc标签
  8. ejb 2.1 jboss_JBoss AS 8中的Java EE 7和EJB 3.2支持
  9. primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)
  10. DMN 1.1 XML:使用Drools 7.0从建模到自动化