PyCharm简单调试

news/2025/1/8 19:05:46/

本文简单讲述一下PyCharm中经常用到的调试操作。

示例代码如下:

python">for i in range(10):print("hello", i)if i > 2:print("ok!")

在代码前面打上断点,如下图所示:
在这里插入图片描述
单机调试按钮Debug
在这里插入图片描述
单机Resume Program按钮,开始调试;
在这里插入图片描述
PyCharm调试模式下,Resume Program(恢复程序)是一个调试操作,用于让程序在当前断点处继续执行,直到程序结束或遇到下一个断点为止。单机一次Resume Program按钮后的效果如下所示。
首先,程序会运行for i in range(10):这行代码,随后会在相应位置显示变量i在内存中值的变化。此时程序停在了print("hello", i)这行,但是还没有运行这一行。
在这里插入图片描述
再单机一次Resume Program按钮,运行效果如下所示。执行print("hello", i)这行代码,程序停在’if i > 2:'这行,但并没有运行这一行。也可以点击Console选项卡,查看运行的效果。
在这里插入图片描述
重复以上步骤,可以观察程序运行的状态,以及变量i的值在内存中的变化。
在这里插入图片描述
PyCharm调试模式中的其他操作还有Step OverStep IntoStep Into My CodeStep Out等。下面简单解释一下各种操作。

Step Over (跳过)

  • 功能:执行当前行的代码,但如果该行代码调用了其他函数或方法,调试器不会进入该函数内部,而是跳过它,继续执行当前函数的下一行。
  • 用途:当你不关心当前行调用的函数的内部实现,只希望快速跳过这些函数调用时使用。

示例代码:

python">def foo():return bar()  # Step Over 会跳过 bar() 的执行,而不进入 bar() 的代码内部def bar():print("Inside bar!")

Step Into (进入)

  • 功能:当程序执行到某一行代码时,如果该行是一个函数调用,Step Into会让你进入该函数的实现细节并逐行调试。
  • 用途:当你希望查看某个函数内部的实现并调试其中的代码时使用。

示例代码:

python">def foo():return bar()  # Step Into 会进入 bar() 函数并开始调试 bar() 内部代码def bar():print("Inside bar!")

Step Into My Code (仅进入我的代码)

  • 功能:与Step Into类似,但这个操作仅会进入你自己编写的代码,而忽略第三方库(例如外部依赖或者系统库)中的代码。
  • 用途:当你希望避免调试外部库的代码,专注于自己编写的业务逻辑时使用。可以避免在调试过程中进入不相关的外部代码。

示例代码:

python">def foo():return bar()  # 如果 bar() 是外部库的函数,Step Into My Code 会跳过它,直接跳到 foo() 的下一行

Step Out (跳出)

  • 功能:当你进入一个函数进行调试时,Step Out会执行完当前函数的剩余代码并跳出函数,直接返回到调用该函数的位置(即跳出当前函数并回到调用它的地方)。
  • 用途:如果你已经进入一个函数调试,但不想再逐行执行该函数的代码,而是希望尽快返回到调用它的位置时使用。

示例代码:

python">def foo():print("In foo")bar()  # Step Out 会让你跳出 bar() 函数并返回到 foo() 调用它的位置def bar():print("In bar")

感谢浏览,一起学习!


http://www.ppmy.cn/news/1561616.html

相关文章

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯(十一) 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…

【Vue】:解决动态更新 <video> 标签 src 属性后视频未刷新的问题

问题描述 在 Vue.js 项目&#xff0c;当尝试动态更新 <video> 标签的 <source> 元素 src 属性来切换视频时&#xff0c;遇到了一个问题&#xff1a;即使 src 属性已更改&#xff0c;浏览器仍显示旧视频。具体表现为用户选择新视频后&#xff0c;视频区域继续显示之…

前端-计算机网络篇

一.网络分类 1.按照网络的作用范围进行分类 &#xff08;1&#xff09;广域网WAN(Wide Area Network) 广域网的作用范围通常为几十到几千公里,因而有时也称为远程网&#xff08;long haul network&#xff09;。广域网是互联网的核心部分&#xff0c;其任务是长距离运送主机…

关于Linux PAM模块下的pam_listfile

讲《Linux下禁止root远程登录访问》故事的时候&#xff0c;说好会另开一篇讲讲pam_listfile。我们先看看pam_listfile的man文档怎么介绍的。 下面这些就好比人物的简介&#xff0c;甚是恼人&#xff1b;让人看得不明就里&#xff0c;反正“他大舅他二舅都是他舅”。可以直接跳…

Js:面向对象的特点

一、封装&#xff1a;安全性 二、继承&#xff1a;扩展性 可以通过 extends 关键字实现继承 1、减少重复的代码&#xff1a; class Animals { // 父类&#xff08;超类&#xff09;constructor(name,age){this.name name;this.age age;}run(){console.log(跑)} }class Dog…

AWS DMS基础知识

1.AWS Database Migration Service &#xff08;DMS&#xff09; 概述 AWS DMS 定义&#xff1a;它能助力以最少停机时间把数据库迁移至 AWS&#xff0c;支持同构&#xff08;如 Oracle 到 Oracle&#xff09;、异构&#xff08;如 Oracle 到 PostgreSQL &#xff09;迁移。常…

【Qt】主窗口

目录 Qt主窗口的构成 菜单栏 创建菜单栏 向菜单栏中添加菜单 向菜单中添加菜单项 工具栏 创建工具栏 工具栏的停靠位置 工具栏的浮动属性 工具栏的移动属性 状态栏 创建状态栏 向状态栏中添加的信息 浮动窗口 浮动窗口的停靠位置 向浮动窗口中添加控件 Qt主窗口的…

unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等

目录 1 初始的C# 脚本 1.1 初始的C# 脚本 1.2 创建时2个默认的方法 2 常用的几个生命周期方法 2.1 脚本的生命周期 2.1.1 其中FixedUpdate 方法 的时间间隔&#xff0c;是在这设置的 2.2 c#的基本语法别搞混 2.2.1 基本的语法 2.2.2 内置的方法名&#xff0c;要求更严…