当前位置: 首页 > news >正文

Pycharm如何打断点进行调试?

断点调试,是编写程序中一个很重要的步骤,有些简单的程序使用print语句就可看出问题,而比较复杂的程序,函数和变量较多的情况下,这时候就需要打断点了,更容易定位问题。

一、添加断点

在代码的行标前面,左键单击,会出现一个红色圆点图标

二、调试断点

有两种方法:

1、在代码区域,鼠标右键,选中Debug开始调试(推荐)

2、点击代码区域右上角的虫子图标

注意选择正确的文件,在虫子图标的左侧,如选错了,就是给其他文件Debug了

开始进入Debug调试模式后,程序会运行到第一个断点,可以在代码后面或者Debugger工具面板查看变量值。

三、Debugger窗口各图标的含义

1、Show Execution Point (Alt + F10)

作用是定位当前执行点,在调试过程中,代码可能会在多个断点之间跳转,或者通过函数调用进入不同的代码块,使用"Show Execution Point"功能,可以方便地看到当前正在执行的代码行,而无需手动滚动代码窗口。

2、Step Over(F8)

调试过程中,如果想逐行执行代码并查看每一行的执行结果,但不希望进入函数调用的内部代码,而是直接执行完整个函数并跳过它 ,就可以使用它,在不存在子函数的情况下是和Step Into效果一样的(简而言之,越过子函数,但子函数会执行)

举个例子,有以下Python代码,设置断点, 点击 Debugger 窗口的 "Step Over" 按钮(或按下 F8 键) ,可以看到没有进入multiply(a,y)函数,直接计算出product_result的值了。

3、Step Into (F7)

单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数)。

举个例子,有以下Python代码,设置断点, 点击 Debugger 窗口的 "Step Into" 按钮(或按下 F7 键) ,可以看到进入multiply(a,y)函数了。

4、Step Into My Code(Alt + Shift + F7)

进入自己编写的函数,但不进入系统函数,很少用到。

5、Force Step Into(Alt + Shift + F7)

强制进入,在调试的时候能进入任何方法, 它允许你在遇到多个可以进入的函数调用时,自行选择要进入的函数,而不是按照默认的逐层进入顺序。

举个例子, 有以下Python代码,假设你在调试模式下启动了这段代码,并在 sum_result = add(num1, num2) 这一行设置了断点。当代码停在这个断点处时,你可以点击 Debugger 窗口的 "Step Into" 按钮(或按下 F7 键)来进入 add() 函数的内部。

现在,如果你想进入 divide(product_result, num2) 这个函数调用的内部,你可以在 Debugger 窗口中右键点击 divide 这一行,然后选择 "Force Step Into"。这将会强制 Debugger 跳过 multiply() 函数内部的逐行执行,直接进入 divide() 函数内部。

6、Step Out( Shift + F8

当单步执行到子函数内时,用Step Out就可以执行完子函数余下部分,并返回到上一层函数。 "Step Over" 是逐行执行并忽略函数内部的操作,而 "Step Out" 是从当前函数内部退出并继续执行到调用点的操作。

举个例子,有以下Python代码,在sum_result = add(num1, num2)处打断点,代码执行进入add函数后,点击Step Out,直接跳出add函数,但是还是会计算出sum_result的值。

7、Run to Cursor( Alt + F9

一直执行,到光标处停止,用在循环内部时,点击一次就执行一个循环。它是一个非常实用的功能,可以帮助你快速运行代码片段,跳过不必要的中间步骤,以及在你只关心特定部分的情况下更高效地进行调试。

举个例子,有以下Python代码,假设你在调试模式下启动了这段代码,并在 num1 = 5 这一行设置了断点。现在,如果你想要跳过 add(num1, num2) 函数调用的逐步执行,直接执行到 print("Sum:", sum_result) 这一行,你可以在该行上右键点击,然后选择 "Run to Cursor"。

这将会让程序在当前位置直接运行,直到光标所在的位置。在这个例子中,它将跳过 add() 函数的内部执行,直接执行到 print("Sum:", sum_result) 这一行,然后停止。

8、Evaluate Expression Alt + F8

计算表达式。 这个功能对于查看变量、计算表达式、验证假设以及调试代码时的实时观察非常有帮助,可以动态地在断点处计算和查看不同表达式的值,更好地理解代码在不同步骤的状态,以及发现潜在的问题。

举个例子,有以下Python代码,假设你在调试模式下启动了这段代码,并在 sum_result = add(num1, num2) 这一行设置了断点。当代码停在这个断点处时,你可以使用 "Evaluate Expression" 功能来计算和查看一些表达式的值。

例如,你可以在调试器的窗口中找到 "Evaluate Expression" 输入框,然后输入表达式 num1 + num2 并点击 "Evaluate" 按钮。这将会计算 num1 和 num2 的和,然后显示结果。

9、Return XXX(Ctrl + F5)

重新运行程序,会关闭服务后重新启动程序。

10、Resume Program (F9)

允许你从一个断点处恢复程序的执行,跳过你不想逐步检查的部分,以便你能够更快地观察代码的整体行为。

比如,你在第20行和26行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第26行),再按F9,则运行完整个流程,因为后面已经没有断点了。

11、Pause Program

暂停程序,启用Debug, 以便能够检查当前的状态、变量的值,或者观察代码的执行情况,完成了查看和调试操作后,可以继续执行程序,通常是通过点击调试器工具栏上的 "Resume Program"(通常是一个绿色的三角形图标)来恢复程序的执行 。

12、Stop 'xxx' (Ctrl + F2)

允许立即停止程序的执行和调试会话,适用于需要立即中止调试过程的情况。有时候会发现关闭服务再启动时,报端口被占用,这是因为没完全关闭服务的原因,这个时候就需要查杀所有JVM进程了。

13、View Breakpoints (Ctrl + Shift + F8)

能够查看和管理代码中设置的断点,帮助更好地进行调试和观察程序的执行流程。

14、Mute Breakpoints

一次性临时禁用所有断点,而不必逐个去禁用每个断点 ,在不删除断点的情况下,暂时停止断点的触发,以便在某些特定情况下进行调试或测试时非常有用。

选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。

今天的分享就到这里,下期见~

相关文章:

Pycharm如何打断点进行调试?

断点调试,是编写程序中一个很重要的步骤,有些简单的程序使用print语句就可看出问题,而比较复杂的程序,函数和变量较多的情况下,这时候就需要打断点了,更容易定位问题。 一、添加断点 在代码的行标前面&…...

微服务02-docker

1、Docker架构 1.1 镜像和容器 Docker中有几个重要的概念: 镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。Docker镜像是用于创建 Docker 容器的模板 。就像面向对象编…...

CSS:盒子模型 与 多种横向布局方法

目录 盒子模型块级盒子内联级盒子内联块级盒子弹性盒子display 改变模型区域划分text 内容区padding 填充区border 边框区margin 外边距直接设置盒子大小 布局横向布局方法一 float 浮起来方法二 内联块级元素实现方法三 弹性盒子模型 盒子模型 块级盒子 独占一行&#xff0c…...

用node.js搭建一个视频推流服务

由于业务中有不少视频使用的场景,今天来说说如何使用node完成一个视频推流服务。 先看看效果: 这里的播放的视频是一个多个Partial Content组合起来的,每个Partial Content大小是1M。 一,项目搭建 (1)初…...

【SpringCloud】Feign远程调用

先来看我们以前利用RestTemplate发起远程调用的代码: String url "http://userservice/user/" order.getUserId(); User user restTemplate.getForObject(url, User.class);存在下面的问题: • 代码可读性差,编程体验不统一 • …...

集合Collection-List-ArrayList学习

一、集合 集合是数据容器。相较于数组集合具有以下几个特点: 数组一旦创建,长度不可改变。集合的长度会自动扩容。集合具有很多数组没有的功能函数API数组元素的存储特点单一,不同的集合有不同的存储特点。 1. Collection顶层接口 Collect…...

mybatispuls代码生成器

引入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...

【设计模式】-代理模式

在软件开发中&#xff0c;经常遇到需要对某个对象进行控制或者监控的场景。而直接修改对象的代码可能使代码变得复杂且难以维护。这时&#xff0c;使用代理模式&#xff08;Proxy Pattern&#xff09;可以很好地解决这个问题。 代理模式是一种结构型设计模式&#xff0c;通过引…...

爬虫ip池越大越好吗?

作为一名资深的程序员&#xff0c;今天我要给大家分享一些关于爬虫ip池的知识。关于ip代理池的问题&#xff0c;答案是肯定的&#xff0c;池子越大越好。下面跟我一起来盘点一下ip池大的好处吧&#xff01; 1、提高稳定性 爬虫ip池越大&#xff0c;意味着拥有更多可用的爬虫ip…...

目标检测常用的数据集格式

在目标检测领域&#xff0c;有三种常用的数据集&#xff1a; 数据集标注文件格式bbox格式vocxmlxmin, ymin, xmax, ymax:bbox左上角(xmin, ymin)和右下角(xmax, ymax)的坐标cocojsonx, y, w, h:bbox左上角坐标(x, y)以及宽(w)和高(h)yolotxtxcenter, ycenter, w, h:bbox的中心…...

chrome插件开发实例03-使用 chrome.storage API永久保存数据

目录 防止数据丢失 使用chrome.storage API 功能 功能演示 源代码 manifest.json popup.html...

Segment Anything(SAM) 计算过程

给定输入图像 I ∈ R 3 H W I \in R^{3 \times H \times W} I∈R3HW。给定需要的prompts&#xff1a; M ∈ R 1 H W M \in R^{1 \times H \times W} M∈R1HW&#xff0c;代表图片的前背景信息。 P ∈ R N 2 P \in R^{N \times 2} P∈RN2&#xff0c;其中 N N N 是点的个数…...

Nacos配置文件读取源码解析

Nacos配置文件读取 本篇文章是探究&#xff0c;springboot启动时nacos是如何将配置中心的配置读取到springboot环境中的 PropertySourceLocator org.springframework.cloud.bootstrap.config.PropertySourceLocator 是 springcloud 定义的一个顶级接口&#xff0c;用来定义所…...

Linux0.11内核源码解析-fcntl.c/iotcl.c/stat.c

fcntl fcntl.c实现了文件控制系统调用fcntl和两个文件句柄描述符的复制系统调用dup()和dup2()。 dup返回当前值最小的未用句柄&#xff0c;dup2返回指定新句柄的数值&#xff0c;句柄的复制操作主要用在文件的标准输入、输出重定向和管道方面。 dupfd 复制文件句柄&#xff…...

OpenStack简介

OpenStack简介 目录 OpenStack简介 1、云计算模式2、云计算 虚拟化 openstack之间的关系&#xff1f;3、OpenStack 中有哪些组件&#xff1f;4、计算节点负责虚拟机运行5、网络节点负责对外网络与内网之间的通信 5.1 网络节点仅包含Neutron服务5.2 网络节点包含三个网络端口6、…...

二分法的应用

文章目录 什么是二分法&#x1f3ae;二分查找的优先级二分查找的步骤&#x1f4a5;图解演示&#x1f9e9; 代码演示&#x1fad5;python程序实现&#x1f408;‍⬛C程序实现&#x1f415;‍&#x1f9ba;C程序实现&#x1f42f;Java程序实现&#x1f433; 非常规类二分查找&…...

ChatGPT在大规模数据处理和信息管理中的应用如何?

ChatGPT作为一种强大的自然语言处理模型&#xff0c;在大规模数据处理和信息管理领域有着广泛的应用潜力。它可以利用其文本生成、文本理解和问答等能力&#xff0c;为数据分析、信息提取、知识管理等任务提供智能化的解决方案。以下将详细介绍ChatGPT在大规模数据处理和信息管…...

【算法篇C++实现】五大常规算法

文章目录 &#x1f680;一、分治法⛳&#xff08;一&#xff09;算法思想⛳&#xff08;二&#xff09;相关代码 &#x1f680;二、动态规划算法⛳&#xff08;一&#xff09;算法思想⛳&#xff08;二&#xff09;相关代码 &#x1f680;三、回溯算法⛳&#xff08;一&#xf…...

MySQL和钉钉单据接口对接

MySQL和钉钉单据接口对接 数据源系统:钉钉 钉钉&#xff08;DingTalk&#xff09;是阿里巴巴集团打造的企业级智能移动办公平台&#xff0c;是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉工牌…...

layui的基本使用-日期控件的业务场景使用入门实战案例一

效果镇楼&#xff1b; 1 前端UI层面&#xff1b; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术&#xff1a;基于互相关的相干体技术&#xff08;Correlation&#xff09;第二代相干体技术&#xff1a;基于相似的相干体技术&#xff08;Semblance&#xff09;基于多道相似的相干体…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...