zoukankan      html  css  js  c++  java
  • 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

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

    图片

    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 保存设置。

     

    修改后运行的效果如下:

    图片


    转:https://mp.weixin.qq.com/s/MSj9JdNhzdSeP0qdF2piEw

  • 相关阅读:
    rdb 和 aof
    nginx 遇见问题与解决问题
    linux 每天一个命令
    Consul 集群搭建
    Consul 安装的与启动
    hession RMI 远程调用
    3、使用Lucene实现千度搜索
    1、什么是Lucene,Lucene能干什么
    Tengine笔记2:通过IP、域名、端口实现虚拟主机
    Tengine笔记3:Nginx的反向代理和健康状态检查
  • 原文地址:https://www.cnblogs.com/qxh-beijing2016/p/14311470.html
Copyright © 2011-2022 走看看