From: http://blog.csdn.net/u013088062/article/details/50214459html
From: http://blog.csdn.net/u013088062/article/details/50216015web
From: http://blog.csdn.net/u013088062/article/details/50221825express
最全Pycharm教程(10)——Pycharm调试器总篇windows
最全Pycharm教程(11)——Pycharm调试器之断点篇session
调试设置函数
调试过程工具
设置断点布局
条件性控制断点测试
四、Run/debug 配置知识this
每当你经过Pycharm来运行或者调试一个脚本文件时,都须要一个特殊的文件来记录脚本的名称、工做目录以及其余的重要调试信息。Pycharm已经针对特定模式预先建立好了配置文件,避免咱们手动去建立。
每次你单击运行或者调试按钮时(或者经过快捷菜单执行相同的操做),咱们实际上都是在当前工做模式中加载了对应的配置文件。详见product documentation。
五、断点
一个断点标记了一个代码行,当Pycharm运行到该行代码时会将程序暂时挂起。Pycharm提供了几种形式的断点 types of breakpoints,其图标 icon各不相同。详见 product documentation中的Breakpoints tutorial。
六、实例
在你的Python工程中,建立一个新的Python文件,命名为ThreadSample.py,而后输入如下代码:
七、设置断点
首先,在源码中设置断点。经过单击代码左侧的空白槽来在对应位置生成断点:
八、开始调试
选择 run/debug configuration "ThreadSample",而后按下Shift+F9(或者单击工具栏中的绿色蜘蛛形式的按钮),调试开始,并在第一个断点处中止:
断点所在的行变为蓝色,说明Pycharm已经击中了这个断点,但还没有执行这行代码。
九、更改调试窗口的布局
此时Pycharm进入调试界面模式Debug tool window,各个控件的具体功能详见know how to use this tool window。
加入你并不喜欢当前的默认布局,例如你但愿将调试器输出窗口做为一个独立的窗口显示以便更方便的观察当前的调试状态,你能够对布局进行个性化定制。
首先,咱们先把调试工具窗口独立出来,只须要右击窗口的标题栏,而后选择Floating mode:
接下来将控制台窗口移动成为一个独立的窗口,只须要拖动控制台窗口将其拖出测试窗口便可:
能够经过单击工具栏上的按钮来恢复到默认布局。
更多信息请参见PyCharm Tool Windows和Moving tabs and area
十、添加一个变量查看器
接下来咱们介绍如何在调试过程当中观察变量的状态。咱们须要对其设置一个查看器。在Watches窗口中,单击绿色的加号,输入指望查看的变量名称,
例如这里输入delay,而后回车。固然你也能够采用另一种方式:在编辑窗口中右击变量名,在快捷菜单中选择Add to watches:
此时观察Watches窗口,发现delay变量目前还没有定义:
稍后你将会看到如何对这个变量进行赋值,以及其在watches窗口中的变化。接下来咱们为get_thread_name()函数设置一个查看器做为练习。
十一、浏览帧
此时你能看到一个名为 MainThread 进程,其中包含三帧。单击每一帧来显示其变量状态以及相对应的py文件,同时会对有问题的代码行以高亮显示:
十二、简单的调试
在每一个断点处都单击按钮来使程序继续运行,观察控制台的脚本输出:
1三、步进式脚本调试
让咱们对当前脚本进行进一步的调试。单击重启调试进程,程序再次运行到第一个断点处并暂停。
在调试窗口的顶端,你会看到一列包含步进调试按钮的工具栏 stepping buttons。
单击,或者按下F8,你会发现蓝色标记移动到了下一行:
与此同时,当你暂停了脚本执行时(单击按钮),你能看到高亮表示的函数print_time(),你能够选择其中的任何一个进程,并观察变量的变化:
1四、运行到当前光标处
假如你不想加入断点,但仍但愿代码可以调试运行到某一指定的代码行,如何操做?
返回调试界面的第二个断点处,在对应行插入输入光标。
单击按钮,或者按下Alt+F9快捷键,该行代码变为高亮显示:
1五、如何调用Debug命令
值得一提的是全部的调试操做不只仅能够经过调试工具栏的对应按钮来完成,还能够经过主菜单中Run菜单下的命令来实现,以及相关的快捷菜单项。下面给出一些经常使用的调试菜单命令及其对应的快捷键列表:
更多控件描述参见Debug tool window。
三、断点属性
有两种方法来浏览和改变代码属性:
(1)首先,有一个单独的置顶窗口来显示断点属性。
(2)有一个断点对话框 Breakpoints dialog来显示当前应用中所存在的全部断点及其属性。
四、设置断点
选中对应代码行,而后执行下面步骤(二选一):
(1)单击左边空白槽
(2)按下Ctrl+F8快捷键
这是一个触发开关式的操做,便可以不断的重复操做以移除/添加断点。
做为练习,在第16行设置断点:
五、浏览并改变断点属性
为了浏览单独一个断点的属性,只需右击它便可:
六、启用和关闭断点
首先,清空复选框中的Line 16 in ThreadSample.py enabled选项,此时断点会失效,同时图标中心会变为绿色:
OK,再次勾选复选框,图标恢复原状,断点生效。
七、条件性代码悬挂
假设你但愿Pycharm在当前代码处只挂起某一个线程,而其余线程可以正常经过断点,操做很是简单,为断点添加一个条件便可:
接下来咱们开始脚本调试(单击工具栏中的按钮),你会看到实际上Pycharm只在当前断点处挂起了Thread-7,而Thread-6正常经过了该断点:
八、如何忽略某些断点?
一般状况下,你只须要在某一个断点处停下来,而但愿在其余断点可以正常经过。
换句话说就是咱们并不但愿Pycharm在断点处中止,但咱们仍须要保留对应断点来做为标记,如何实现?
在对话框中取消Suspend复选框的勾选,此时断点属性对话框中会显示更详细的信息:
勾选一下两个选项:
(1)Log messages to console:选中这个选项后,Pycharm会在命中该断点后在控制台上显示相关重要信息。
(2)Log evaluated expressions:选中这个选项以后,Pycharm会计算下方输入框中给出的特定表达式并显示在控制台上。
顺便说一下,在下发输入框中输入表达式时Pycharm一样提供了拼写提示功能(Ctrl+空格)。OK,从新运行调试,Pycharm会在调试控制台中显示一下信息:
九、浏览全部断点
以上你使用到的全部断点相关的对话框都能帮助你获取断点的大部分重要信息。不过咱们一般使用 Breakpoints dialog对话框来完成大部分断点处理工做,它会显示当前项目中的全部断点的属性信息,并方便咱们对其进行更改。
咱们能够经过如下几种方式来打开这个对话框:
十、建立一个临时断点
假设你但愿这样一个断点,即Pycharm在命中它以后就将命中的断点删除。Pycharm提供了一个特殊的复选项Remove once hit,默认状况下是不会启动这个机制的。
加入Suspend复选框已经选中,接下来再选中Remove once hit复选框,观察断点的图标的变化:
从新调试,发现Pycharm只会在断点处暂停一次,以后便会将其移除,以保证以后的程序执行不会受到阻碍: