当爸爸妈妈参予两个Python工程项目的合作开发时,会时常碰到上面的情景:
康春兵:“敲了六天标识符,今天的各项任务匆匆忙忙的就完成了代码,先运转起来,试验呵呵机能,如果没难题应该可以说行晚班了。”
康春兵:“咦,咋,那个
康春兵:“标识符太少了,还是增容呵呵吧!直接在输入结果的标识符边线增设两个PT5716SB0,接着已经开始增容,迅速流程就运转到那个边线了,仔细观察各模块的值,是没错呀。那就竭尽全力由上而下的增容运转, 看一看接下去的标识符是怎么走的。”
康春兵:“咦,辨认出难题了,那个前提推论的地方少了两个推论前提,引致初始化了除此之外两个表达式。哎,这段话了,说实话有标识符试验的生活习惯,不然又该被党委骂了。”
康春兵:“3五两分钟修正好了推论前提,再次运转,没难题,其他的机能也没难题,已经开始递交标识符。看一看时间,还有30两分钟才上班。那就竭尽全力自学Python新科学知识。”
除自己写标识符的试验过程中会辨认出难题,出现不恰当的预估以及发生极度外,试验人员在试验的过程中也可能辨认出应用软件上的难题或bug。这时,合作开发者就需要借助于强悍的标识符增容机能来辨认出难题或bug的原因。因此,合作开发者不是在写标识符的马路上就是在增容标识符的马路上。专业委员会增容标识符成为每人合作开发者必不可少的专业技能。
PyCharm作为当仁不让的Python IDE的宝物,在标识符增容方面提供了方便快捷新颖的GUI的增容机能全力支持。接下去,大雄就给爸爸妈妈如是说PyCharm的Debug标识符增容专业技能。
01 准备
使用PyCharm增建两个工程项目,接着增建两个捷伊py文档walk_file.py,在文件中输入上面的标识符:
上面的表达式walk_file中的标识符主要完成上面的机能:
“结点文档夹某个给定的文档夹路径,接着输入那个文档夹里面的每个文档以及子文档夹的全路径名称。”
文档夹的目录结构如下:
我们今天有个各项任务:
在debug增容模式下,查看for循环中从os.walk接口取到的root, dirs, files这3个变量具体保存的是什么?
在已经开始增容之前,爸爸妈妈先想想,debug增容是一种什么样的运转过程?
平时爸爸妈妈都看过警匪片吧,警察在搜集和排查嫌疑人时,通常会有很多嫌疑人的视频。有了视频,但视频很多呀,不可能一秒一秒的看,就要凭经验以及掌握的一些线索,大概确定出在那些时间段或是地点,那个嫌疑人有可能出现或是作案,接着把视频画面在那个时间点范围拖动,观察各细节,从而找出有用的线索证据。
其实,标识符的debug增容和上面的过程非常类似。虽然我们可以一行标识符一行标识符的去增容,但是在大工程项目中,这样很不现实。于是,我们要通过出错的信息以及难题描述,大概确定出难题最可能发生在哪个表达式里面,或是某个初始化接口上。接着,在这些地方,打个PT5716SB0。接着,Debug增容的时候,标识符运转到这些PT5716SB0的地方,就会停下来,我们就可以在相关的增容面板上能观察到初始化堆栈信息、当前变量的值等信息,通过这些信息,就能方便快捷我们找出难题的原因。
以上就是我们进行标识符增容时的两个基本思路和过程。接下去,我们用实际操作来说明。
02 已经开始增容
在PyCharm中有4种方法已经开始debug增容。
2.1. 方法1
打开要增容的标识符文档后,在标识符编辑窗口的任何边线,鼠标右键后,在弹出的菜单中点击如下图所示的菜单项:
2.2. 方法2
在应用软件的右上角,点击如下图所示的那个绿色图标
23. 方法3
在标识符编辑器窗口的左侧区域,点击如下图所示的绿色三角图标,在弹出的菜单中点击如下图所示的菜单项:
2.4. 方法4
在PyCharm应用软件的顶部菜单栏,点击【Run】菜单,接着选择如下图所示的菜单项。
2.5. 方法5
在PyCharm左侧的工程项目文档列表的某个要被增容的文档上面,点击右键,在弹出的菜单中点击如下图所示的菜单项:
总结:方法很多,爸爸妈妈掌握常用的一两种方法就可以了。当你有了一定的经验后,其他的不用记,自己就摸索出来了。
03 增设PT5716SB0
增设PT5716SB0的方式非常的简单,在标识符编辑器窗口的左侧区域,在你要增设PT5716SB0的标识符行的区域,鼠标点击就打好了两个PT5716SB0,再点击呵呵就取消那个PT5716SB0。如下图所示:
04 增容窗口和操作
前面已经增设好了PT5716SB0,现在已经开始增容,标识符首先停在了标识符执行顺序上的第两个PT5716SB0边线处(下图中第22行),这一行的标识符背景色被设为了蓝色,通过背景颜色,就能知道当前增容执行到了哪行标识符边线。
上面详尽说明增容控制区和标识符运转控制区的各图标的作用。
4.1. 增容控制区
那个区域,主要对增容和PT5716SB0进行控制,比如结束增容,再次已经开始增容,显示或禁用所有PT5716SB0。其中,上面的那个机能,在增容过程中使用频率很高,需要熟练记住:
1)Resume Program「用于运转到下两个PT5716SB0」,快捷键是F9, 对应上图中的第2个图标。
其他的4个使用频率低,平时使用鼠标操作就可以。
上面详细说明上面5个机能的使用情景:
1)Rerun 文档名 Ctrl+F5
用于再次对那个文档已经开始增容。比如,为了找出难题的原因,由于原因有点复杂,第一次增容完后,还没找出原因,需要再次再进行一次增容,这时候使用那个机能按钮就可以了。
2)Resume Program F9
用于把标识符从当前边线运转到下两个PT5716SB0处。那个很容易理解,每次只在有PT5716SB0的标识符行处暂停运转。使用频率非常高。
3)Stop 文档名 Ctrl+F2
停止对当前标识符的增容。比如,在增容过程中,我已经找到了难题的原因,或者有事情要停止增容,这时使用那个机能按钮就可以了。
4)View Breakpoints… Ctrl+Shift+F8
查看当前Python工程项目的所有的PT5716SB0。比如,两个大工程项目,有成百上千个模块文档,在解决好几个bug时,有可能在很多模块里都打了PT5716SB0。在定位某个bug时,PT5716SB0太少了,有些PT5716SB0也没用处了,由于增容时,每个PT5716SB0都会暂停,很费事。因此,就要看一看到底有多少个PT5716SB0,再把没用的PT5716SB0去掉。这时,那个机能按钮就派上用场了。如下图所示:
5)Mute Breakpoints
所有的PT5716SB0处于禁用模式,如果新加PT5716SB0也是处于禁用状态。再点呵呵,就从禁用模式切换回启用模式。比如,现在有两个bug,需要标识符运转后,触发某个交互前提时,才会触发某个PT5716SB0。但是,在标识符已经开始运转时,就已经有很多PT5716SB0了,每两个PT5716SB0都会暂停运转,太烦人了,这时就可以点呵呵那个机能按钮,先切换到禁用模式,等标识符完全运转后,再切换回启用模式。
4.2. 标识符运转控制区
那个区域,主要对增容标识符的运转边线进行控制,比如运转到下两个PT5716SB0,由上而下运转,运转边线是两个表达式,我想进入到那个表达式里面看一看是怎么实现的。其中,以下3个机能使用的频率最高,需要熟练记住:
1) Step Over「用于由上而下运转」,快捷键F8,对应上图中的第2个图标。
2) Step Into「用于进入到初始化表达式的标识符中去」, 快捷键F7,对应图中的第3个图标。
3)Step Out「用于退出在初始化表达式的标识符中的增容」,快捷键Shift+F8,对应图中的第5个图标。
其他的3个机能的使用频率低,平时使用鼠标操作就可以。
上面详尽说明上面6个机能按钮的使用情景:
1) Show Execution Point Alt+F10
回到当前增容标识符的运转边线。比如,在增容标识符时,那个模块文档的标识符行数很多(几千行),在查看本模块的其他处的标识符时,花了很长时间,终于得到了有用的线索,这时,想回到刚才增容的标识符处,再进行分析。却辨认出找不到刚才增容的边线了,这时点击那个机能按钮,就回到增容边线啦。
2) Step Over F8
在当前增容标识符处,一行一行的运转标识符,这样可以查看每一行标识符执行后,当前作用域下所有变量的状态变化,方便快捷进行难题定位。比如,我们定位难题时,辨认出难题时出现在某个表达式f1里面,但不确定是什么原因或是哪一行,那么就可以在f1表达式的第一行设两个PT5716SB0,当标识符运转到那个PT5716SB0处,再使用F8,一行行的观察,就能迅速的定位到出难题的标识符处。
3) Step Into F7
增容标识符时,有可能某一行标识符是两个表达式初始化,使用F7就可以进入到那个表达式内部进行增容。比如,我们在初始化某个库表达式时,返回的结果和我们预期的不一样,这时,就可以使用增容机能,在此处打个PT5716SB0,当标识符运转到那个PT5716SB0时,使用F7进入到那个表达式内部,看一看表达式内部到底是怎么样的两个处理逻辑,引致与我们的预期不一致。
4) Step Into My Code Alt+Shift+F7
与 上面第3个的机能类似。唯一不同的是,当被初始化的表达式是库表达式时,不会进入到那个表达式的内部,此时的效果就跟F8一样。
5) Step Out Shift+F8
当使用上面的第3或第4个机能,进入到某个表达式里面去了后,想从该表达式中退出,就可以使用那个机能按钮。比如,在初始化表达式f1处有两个PT5716SB0,我严重怀疑那个表达式的实现有难题,于是使用F7进入到了那个表达式f1内部进行一行行的增容,但是增容了一半的标识符后,辨认出那个表达式没难题,于是我就不再浪费时间了,想退出在那个f1表达式里面的增容,这时就可以使用那个机能按钮了。
6) Run to Cursor Alt+F9
运转到鼠标所在的标识符行边线。比如,增容标识符时,标识符在两个PT5716SB0处暂停下来,这时我已经开始观察标识符,发现此行标识符上面的第5行标识符处,可能要重点看一看,但我又不想打两个捷伊PT5716SB0,于是我把鼠标移动到这行标识符处,按下Alt+F9键,于是标识符就运转到那个边线了。
05 各项任务演示
通过上面增容相关科学知识的自学,爸爸妈妈们已经具备了牢固的基础科学知识和增容操作专业技能。接下去,大雄就带大家完成第一节中的各项任务,来具体演示一遍增容过程:
1、首先增设PT5716SB0;大雄在标识符中增设了如下2个PT5716SB0。
2、已经开始增容;增容后标识符停在第两个PT5716SB0处,此时观察变量窗口,辨认出很多可以访问的变量及其值。有没辨认出变量__name__的值是什么?
3、使用F7,进入到第7行标识符处;
因为第7行没PT5716SB0,所以不能使用F9。接着观察变量窗口
4、使用F9,运转到下两个PT5716SB0处;
5、使用F8,观察标识符在第13行的for语句处,执行了几次?
6次还是7次?为什么?
6、使用F7,查看os.path.join表达式的内部实现;
7、使用Run to Cursor,运转到上述标识符的第91行处;
首先,在第91行处点击,把鼠标定位在这一行。接着,鼠标点击Run to Cursor,标识符就运转到了这一行。
8、使用Shift+F8,退出os.path.join表达式中的增容,回到walk_file表达式中;
06 变量观察窗口
细心的爸爸妈妈可能辨认出两个难题,每次增容时,PyCharm应用软件下部的变量显示窗口,只显示当前标识符行所在的局部作用域中的局部变量,而其他外层的作用域中的变量,是不显示的。但有时候,我们也要同时查看外层作用域中的变量。应该怎么办?这时,还有两个窗口《变量观察窗口》,可以派上用场了,我们把外层中的需要查看的变量添加到那个观察窗口中,就可以了。操作实例如下:
今天的分享到这里就结束了,爸爸妈妈可以根据第5节的各项任务演示,实际多操作几遍,相信会有很大的收获,以后再也不怕标识符增容了。
1. 如果觉得有用,请给我个赞,鼓励我写出更多优质文章
3. 欢迎私信交流自学!