最全的Pycharm debug技巧

最全的Pycharm debug技巧:

工欲善其事,必先利其器。无论你的 IDE 是 IntelliJ IDEA、Pycharm、WebStorm、GoLang、还是PhpStorm ,调试器都是标配。在遇到有问题的程序时,合理的利用调试器的跟踪和断点技巧,可以很快的定位出问题原因。下面让我们以 Pycharm 为例,一起来系统的学习下 IDE 的调试技巧吧。

01.Debug 运行方式

在代码所在行号处左击鼠标,就会设置一个行断点。点击 Pycharm 右上角的小虫子图标按钮,就会以 DeBug 的方式运行代码。下面是 DeBug 工作界面的简单介绍。

02.菜单按钮功能介绍

平常 Debug 代码,常用到的一些调试按钮如下,蓝颜色的字体是按钮的名称:

1).Resume Programe:

恢复程序,比如,你在第 12 行和 16 行有两个断点,当前运行至第 12 行,按 Resume Programe ,则运行到下一个断点(即第 16 行);

2).Step Over:

一行一行地往下走,如果这一行上有方法, 不会进入方法。例如下面第 17 行代码有自己的实例方法,点击 Step Over 按钮调试代码就不会进入这个实例方法。

3).Step into:

强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

4).Step Into My Code

为单步进入,如果当前行有自定义的方法,会进入方法内部,但不会进入官方类库的方法,效果如下:

如果大家在学习中遇到困难,想找一个 python 学习交流环境,可以加入我们的python裙,关注小编,并私信“01”即可进裙,领取python学习资料,会节约很多时间,减少很多遇到的难题。

03.常用的 DeBug 小技巧

1).断点条件调试

有这样一个场景,代码 DeBug 的时候,我想知道下面代码 index 为 10 时, date_1的值是什么,正常来说要 代码 DeBug 循环 10 次,很不方便。

在 IDE 中有个条件断点,只需设置好变量条件,只有当某个变量等于你设置的条件的值时,断点就会自动停下。首先右击第 24 行的断点,给 Conditon 设置变量条件 index == 10,并点击 Done 保存设置。

当 index 的值为 10 时,DeBug 就会自动停下,效果如下图:

2).计算表达式

当我们 Debug 某个方法时,有时候会忘了传入某个参数或者传错了,这个时候又不想重新Debug,就可以通过计算表达式来设置某个变量的值,如下图,发现 day_int = 367 不是期望的值,可以鼠标右击下面蓝色的 day_int , 选择 Set Value, 对 day_int 临时修改值

下面的代码程序会根据重新赋的值向下运行,可以看到变量 num_30 的值是 200 整除 30 的结果。

3). 多线程 调试

有时候发现对多线程并发代码无法调试, 并不会所有断点都走到,代码中 87 行的 args 里的变量给了 6个 值, 线程 并发数量设置为 3 个,第 71 行的断点调试我只循环了 2 次,正常来说应该循环 6 次,如下图:

出现上面的情况是因为 IDE 在 Debug 时默认阻塞级别是 Thread,解决办法是将它的阻塞级别改为 All, 阻塞其它线程,只有在当前调试线程走完时才会走其它线程。配置方法是右击断点,Suspend 的值改为 All ,再点击 Make Default, 最好点击 Done 保存设置。

修改后运行的效果如下:

辛苦熬夜整理的debug 技巧就分享到这里,原创不易,欢迎小伙伴们在评论区留言吱一声

source: https://sa.sogou.com/sgsearch/sgs_tc_news.php?req=8_Yu-AnjmenJmrXbdAO5fpQBjofjKE7GK_gHvkpCgkA=&user_type=1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenKG祝大家端午安康

—????????OpenKG祝大家端午安康????????—

两个月,刷了八千篇Arxiv,我发现……

文 | 白鹡鸰编 | 小轶从五月初到现在,大约刷了八千篇Arxiv之后,我发现我有毛病。当然,这是读论文上头时的牢骚,不是真心话,只是说,我在Arxiv上投入的精力的努力,与我预计的收获不成正比。故事的…

深度学习在美团的应用

近年来,深度学习在语音、图像、自然语言处理等领域取得非常突出的成果,成了最引人注目的技术热点之一。美团这两年在深度学习方面也进行了一些探索,其中在自然语言处理领域,我们将深度学习技术应用于文本分析、语义匹配、搜索引擎…

LeetCode 315. 计算右侧小于当前元素的个数(二叉查找树二分查找归并排序逆序数总结)

文章目录1. 题目2. 解题2.1 二叉查找树2.2 二分插入2.3 归并排序1. 题目 给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例: 输入: [5,2,6,1] 输出: [2,1,1…

Python实现共现语义网络

Python实现共现语义网络:

领域应用 | 金融资管领域知识图谱的构建和应用

转载公众号 | DataFunTalk分享嘉宾:李渔 熵简科技 联合创始人编辑整理:唐汝佳出品平台:DataFunTalk导读:本次分享的主题是金融资管领域知识图谱的构建和应用,主要介绍如何运用大数据、AI这些技术手段,来帮助…

我分析了ACL21论文列表,发现对比学习已经...

文 | 花小花Posy小伙伴们,好久不见呀,小花又回来了!最近关注对比学习,所以ACL21的论文列表出来后,小花就搜罗了一波,好奇NLPers们都用对比学习干了什么?都是怎么用的呀?效果怎样呀&a…

2016,你最不应该错过的热门技术文章

本文首发在“美团技术团队”微信公众号,内容已覆盖截止至2017年1月23日最新的技术文章。 1955年3月15日,爱因斯坦给刚去世的密友Michele Besso家人的信中说: “像我们这样信仰物理学的人都知道,过去、现在和未来之间的分别只不过是…

LeetCode 629. K个逆序对数组(DP)

文章目录1. 题目2. 动态规划3. 优化的DP1. 题目 给出两个整数 n 和 k&#xff0c;找出所有包含从 1 到 n 的数字&#xff0c;且恰好拥有 k 个逆序对的不同的数组的个数。 逆序对的定义如下&#xff1a;对于数组的第i个和第 j个元素&#xff0c;如果满i < j且 a[i] > a[…

快速的找出元素是否在list中 python

number [[1,2],[3,2]] num np.array(number) np.argwhere(num2) np.argwhere(num2) array([[0, 1], [1, 1]], dtypeint64) 注意&#xff1a;只能是维度相同的时候&#xff0c;才能用该方法。 om ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nd…

论文浅尝 | 知识图谱的神经符号推理(上)

笔记整理 | 叶橄强&#xff0c;浙江大学在读硕士&#xff0c;研究方向为知识图谱的表示学习和预训练。知识图谱推理是支撑信息提取、信息检索和推荐等机器学习任务的基础组成部分&#xff0c;并且由于知识图可以看作知识的离散符号表示&#xff0c;自然可以利用符号技术做知识图…

ICML2021 | Self-Tuning: 如何减少对标记数据的需求?

文 | 王希梅&#xff0c;高敬涵&#xff0c;龙明盛&#xff0c;王建民源 | THUML本文介绍ICML2021的中稿论文&#xff1a;Self-Tuning for Data-Efficient Deep Learning&#xff0c;就“如何减少对标记数据的需求”这一重要问题给出了我们的思考。论文标题&#xff1a;Self-Tu…

美团点评Docker容器管理平台

本文是郑坤根据第14期美团点评技术沙龙“你不知道的美团云”演讲内容整理而成&#xff0c;已发表在《程序员》杂志2017年1月刊。 美团点评容器平台简介 本文介绍美团点评的Docker容器集群管理平台&#xff08;以下简称“容器平台”&#xff09;。该平台始于2015年&#xff0c;是…

Python 获取本机或者服务器的 IP 地址

获取计算机名称 hostname socket.gethostname() 获取本机 IP ip socket.gethostbyname(hostname) print(ip) 具体操作 import socket hostname socket.gethostname() ip socket.gethostbyname(hostname) print(ip)通常使用 socket.gethostname() 方法即可获取本机 IP …

LeetCode 754. 到达终点数字(数学推理)

1. 题目 在一根无限长的数轴上&#xff0c;你站在0的位置。终点在target的位置。 每次你可以选择向左或向右移动。第 n 次移动&#xff08;从 1 开始&#xff09;&#xff0c;走 n 步。 返回到达终点需要的最小移动次数。 示例 1: 输入: target 3 输出: 2 解释: 第一次移动…

论文浅尝 | 神经符号推理综述(下)

笔记整理 | 许泽众&#xff0c;浙江大学在读博士3、神经驱动的符号推理相比于之前的两种类型&#xff0c;神经驱动的符号推理的目的是挖掘规则&#xff0c;而神经网络在其中扮演的作用是解决纯符号推理的不确定性&#xff0c;并且能够有效的减少搜索空间。这种类型的方法的基本…

Dockerfile构建python 运行项目运行环境

https://blog.csdn.net/qq_24487005/article/details/123380810 目录 构建思路 DockerFile脚本 环境文件解析 pip.conf sources.list openssl.cnf localtime install.sh startup.sh docker镜像构建 构建思路 1、把容器内需要用到的文件全部复制到容器中 2、设置一个工作目录&am…

没有导师指导,该如何自己选题发CVPR?

| 背景底层计算机视觉技术&#xff0c;如图像增强、图像复原等&#xff0c;一直以来都是一个重要且热门的研究方向。传统的方法多基于稀疏编码、小波变换等技术&#xff0c;近年来&#xff0c;深度学习的兴起为该领域带来了新的发展机遇&#xff0c;同时大幅度提升了方法性能。…

Android硬件加速原理与实现简介

在手机客户端尤其是Android应用的开发过程中&#xff0c;我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善&#xff0c;上层软件开发者往往对硬件加速的底层原理了解很少&#xff0c;也不清楚了解底层原理的意义&#xff0c;因此常会有一些误解&…

LeetCode 482. 密钥格式化

1. 题目 给定一个密钥字符串S&#xff0c;只包含字母&#xff0c;数字以及 ‘-’&#xff08;破折号&#xff09;。N 个 ‘-’ 将字符串分成了 N1 组。给定一个数字 K&#xff0c;重新格式化字符串&#xff0c;除了第一个分组以外&#xff0c;每个分组要包含 K 个字符&#xf…