Pycharm学习教程(3) 代码运行调试


Posted in Python onMay 03, 2017

Pycharm代码运行调试,具体内容如下

1、准备工作

(1)Python版本为2.7或者更高版本

(2)已经创建了一个Python工程并且添加了内容,具体参考: Getting Started tutorial

2、第一步——运行代码

打开之前编写的Solver.py文件,在编辑框中右键,选择快捷菜单中的“Run 'Solver'”选项。

Pycharm学习教程(3) 代码运行调试

此时脚本文件正常运行并在调试工具窗口中显示程序的输出值:

Pycharm学习教程(3) 代码运行调试

接下来我们对这两步操作的具体内容做详细的解释。

3、什么是Run/Debug模式

每个需要运行/调试的脚本文件都需要一个特殊的配置文件来指定其脚本名称、所在目录以及其他重要的运行调试信息。Pycharm已经集成了这种配置文件,避免用户手动去创建。

每次当你单击Run或者Debug按钮时(或者在快捷菜单中执行相同操作),实际上都是将当前的运行/调试配置文件加载到当前的调试模型中。

如果你仔细观察第一张图片就会发现,在组合框中根本就没有 run/debug的相关信息,知道第二张图片中它们才出现。这就意味着当执行运行/调试命令的时候,Solver脚本的run/debug配置文件才会自动生成,正如现在所显示的这样。

此时再主工具栏中Run(绿色箭头按钮)和Debug(绿色甲壳虫按钮)两个按钮变得可用:

Pycharm学习教程(3) 代码运行调试

同时这两个图标还是半透明,也就意味着他们临时的,即由Pycharm自动创建的。

OK,单击下拉箭头查看当前的可用命令操作:

Pycharm学习教程(3) 代码运行调试

如果你已经设置了多个run/debug配置方案,它们将都会显示在这里下拉列表中,单击选中一个作为当前工程的run/debug配置文件。

4、保存run/debug配置信息

在上图的下拉列表中,单击Edit configuration选项,打开run/debug配置编辑窗口:

Pycharm学习教程(3) 代码运行调试

在左侧目录中将会出现两个节点:Python和Default。在第一个节点目录下有一个单一的配置选项'Solver',在第二个选项下则有很多配置信息。

这意味着什么呢?

在Default节点下,你只能看到框架的名称或者模式名称,如果你创建一个新的Run/Debug配置文件,它将会在所选中的模式分支下进行创建,如果你更改了Default节点下的设置,相应的与其相关的所有配置文件都会更改。

例如,你想将Pycharm中所用到的Python解释器替换成远程或者本地解释器,就可以通过更改Python页面下的解释器设置,这样所有新建的调试配置文件都会使用这个新的解释器。

早Python节点下,只用单一的配置选项'Solver',它属于Python类型的配置,但与Default节点下的Python机制并不相同,它使用一个非透明的图标进行的表示,这是用来指示当前配置文件的保存状态的,当你保存配置文件之后图标即变为非透明状态。例如,我们在Python类型下为当前的Solver脚本新建一个配置文件,取名'Solver1'。

如果你对已存在的配置文件做了任何更改,这些更改只会应用于对应的脚本区域。

5、正式运行

我们已经能够通过一种非常直接的方式,接下来我们寻求其他方法来运行脚本。

正如我们所知,运行脚本意味着加载当前的调试配置文件,因此,运行脚本主要遵循以下流程:

(1)在主工具栏中,单击run/debug组框,确认当前的调试配置文件信息

(2)做下面的工作(三选一即可):

单击运行按钮,加载配置文件

按下Shift+F10快捷键

在主菜单上,选择Run → Run

此时,我们可以在Run tool window.窗口中观察程序的运行结果。

6、运行测试程序

我们这里并不讨论代码测试的重要性,而是探讨Pycharm如何帮助我们完成这一功能。

7、选择一个测试器

首先,需要指定一个测试器。单击工具栏的设置按钮,打开Settings/Preferences对话框,然后单击进入Python Intergated Tools页面(可以通过搜索功能找到),默认选择如下:

Pycharm学习教程(3) 代码运行调试

在这里我们选择Nosetests,保存并关闭对话框。

8、创建一个test程序块

首先我们创建一个test实例。Pycharm提供了一种非常智能的创建测试代码的方法:单击选中类名然后按下Ctrl+Shift+T快捷键,或者在主菜单中选择Navigate → Test,如果test程序已存在,则会直接跳转到对应代码,否则创建它:

Pycharm学习教程(3) 代码运行调试

按照系统提示进行操作,Pycharm会显示如下对话框:

Pycharm学习教程(3) 代码运行调试

单击OK按钮,查看创建结果:

Pycharm学习教程(3) 代码运行调试

此时Pycharm已经自动创建了一个测试类,当然这只是一个类框架,需要我们手动编写测试函数。

9、运行测试代码

一切就绪后,右击测试类名,在弹出的快捷菜单中选择运行命令:

Pycharm学习教程(3) 代码运行调试

观察运行状态栏中 Test Runner tab的输出结果:

Pycharm学习教程(3) 代码运行调试

10、调试运行

首先要弄清楚,为什么要进行调试?假设我们的程序在运行过程中命中了一个错误,那我们如何定位错误发生的位置?这就需要进行调试。

在Pycharm中我们可以在其中直接对程序进行调试,唯一需要做的准备工作就是在程序必要的地方加设断点,接下来我们进行详细的介绍:

11、什么是断点?

一个breakpoint标记了一个行的位置,当程序运行到该行代码的时候,Pycharm会将程序暂时挂起以方便我们对程序的运行状态进行分析。Pycharm支持若干中类型的断点 types of breakpoints,可以通过对应图标进行分辨。

这里我们采用Python的行断点为例进行介绍

12、设置断点

方法非常简单,单击代码左侧的空白灰色槽即可:

Pycharm学习教程(3) 代码运行调试

注意断点会将对应的代码行标记为红色,这种颜色标记目前还不能被用户所更改,我们会尽快出台解决方案。

顺便说一句,取消断点的操作也很简单,在同样位置再次单击即可。

当你将鼠标指针悬停在断点上方时,Pycharm会显示断点的关键信息,行号以及脚本属性,如果你希望更改该断点的属性,右击断点:

Pycharm学习教程(3) 代码运行调试

可以尝试对断点属性进行个性化更改,然后观察图标的变化。

13、代码调试

接下来,我们正式开始对代码进行调试。

首先从配置文件组框中选择同名的'Solver'文件作为当前调试的配置文件,然后单击调试按钮(绿色甲壳虫样式的按钮):

Pycharm学习教程(3) 代码运行调试

接下来会Pycharm会执行以下操作:

(1)PyCharm开始运行,并在断点处暂停

(2)断点所在代码行变蓝,意味着Pycharm程序进程已经到达断点处,但尚未执行断点所标记的代码。

(3)Debug tool window窗口出现,显示当前重要调试信息,并允许用户对调试进程进行更改。

Pycharm学习教程(3) 代码运行调试

虽然Pycharm使用手册中已经完整提供了调试窗口中所有控件的功能信息,我们这里仍然对其进行简要介绍。我们发现窗口分为两个选项卡:Debugger tab and the Console tab。

(1)Debugger窗口分为三个可见区域:Frames, Variables, 和 Watches。这些窗口列出了当前的框架、运行的进程,方便用户查看程序空间中变量的状态等。当你选择一个框架,就会显示出相关的变量信息,当然这些区域都是可以折叠隐藏的。

(2)Console窗口显示当前的控制台输出信息,默认这个窗口位于Debugger之下,可以通过单击其标签将其前置显示。

当然我们可以改变这些窗口的摆放位置,如果你不喜欢程序的默认排版的话。具体参加Moving tabs and areas章节。

Debugger窗口的工作模式:

OK,现在程序暂停在了第一断点处,Frames窗口显示的是Solver脚本的第7行代码所对应的进程demo,相关变量a、b、c已经定义,但变量d尚未进行定义。接下来?

按下F9(或者左侧工具栏的绿色箭头),程序会继续运行到下一断点处,通过这种方式你可以将每个断点都运行一遍,观察变量的变化。

更多有关 Debugger窗口的信息参见软件手册:product documentation

Console窗口的工作模式:

为什么需要用到Console窗口呢?当我们需要查看程序给出的错误信息,或者进行一些额外的临时运算时,就需要在这个窗口里面进行。

单击Console选项卡使其前置:

Pycharm学习教程(3) 代码运行调试

然后单击左侧工具栏中的命令符按钮,显示Python的命令提示符:

Pycharm学习教程(3) 代码运行调试

此时激活了控制台机制,尝试在其中执行一些Python命令:

Pycharm学习教程(3) 代码运行调试

注意到控制台窗口提供了代码的拼写提示(Ctrl+Space)以及历史记忆(Up/Down keys)功能,更多信息参见: Using Debug Console

最后,如果你希望Console窗口一直处于可用状态,只需将其移动成为一个单独的窗口即可:

Pycharm学习教程(3) 代码运行调试

14、再次运行

在完成了本次调试运行并再次加载调试配置文件之后,我们可以再次运行调试,单击工具栏的run按钮即可。

15、REPL——在控制台界面调试程序

最后,如果你更习惯工作于控制台环境下,也可以将Pycharm设置成为控制台模式。在主菜单中选择Tools → Run Python Console...来加载控制台:

Pycharm学习教程(3) 代码运行调试

此时console窗口将会被激活,并显示为一个单独的窗口:

Pycharm学习教程(3) 代码运行调试

在这个控制台窗口中我们可以做很多有意思的事情,接下来我们演示如何将最近编写的Solver.py文件中的代码导入到控制台:

打开Solver.py文件(打开的方法多种多样,例如Ctrl+E - View → Recent Files),全选文件中的代码内容(Ctrl+A, or Edit → Select All),然后按下Alt+Shift+E(或者右击在弹出的快捷菜单中选择Execute Selection in Console):

Pycharm学习教程(3) 代码运行调试

此时,Pycharm就会自动将选中的代码导入到控制台界面,方便我们对其进行编辑:

Pycharm学习教程(3) 代码运行调试

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python制作钉钉加密/解密工具
Dec 07 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
pandas 条件搜索返回列表的方法
Oct 30 Python
python爬取cnvd漏洞库信息的实例
Feb 14 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
Python 实现简单的客户端认证
Jul 29 Python
python实现canny边缘检测
Sep 14 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
在centos7中分布式部署pyspider
May 03 #Python
python3读取MySQL-Front的MYSQL密码
May 03 #Python
Python判断变量是否为Json格式的字符串示例
May 03 #Python
Windows和Linux下Python输出彩色文字的方法教程
May 02 #Python
python中字符串类型json操作的注意事项
May 02 #Python
python实现逻辑回归的方法示例
May 02 #Python
pycharm中连接mysql数据库的步骤详解
May 02 #Python
You might like
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
2019/04/02 PHP
尽可能写"友好"的"Javascript"代码
2007/01/09 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
javascript最常用与实用的创建类的代码
2010/08/12 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
Angularjs自定义指令实现分页插件(DEMO)
2017/09/16 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
Vuex中的State使用介绍
2019/01/19 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
layui框架与SSM前后台交互的方法
2019/09/12 Javascript
Jquery $.map使用方法实例详解
2020/09/01 jQuery
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
Python如何将装饰器定义为类
2020/07/30 Python
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
车间主管岗位职责
2013/11/14 职场文书
八年级生物教学反思
2014/01/22 职场文书
因家庭原因离职的辞职信范文
2015/05/12 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL