zoukankan      html  css  js  c++  java
  • IntelliJ IDEA 调试技巧

    程序员的工作内容,有不少的时间是用在调试代码上。可以说不是在调试代码,就是即将调试代码。

    掌握调试代码的一些技巧,在使用IDE提供的debugger时会快速定位问题的方式。

    1.多线程调试


    在多线程应用的开发中,有时候为了观察多个线程间变量的不同状态,以及锁的获取等,就会想到在代码里加个断点debug一下。
    在IDE里断点停下来的时候,可以切换到另外的线程中,跑其他的代码,不会互相影响。当然,这里是有个开关的,在Eclipse里默认开启,
    IDE直接在断点处,将suspend改成Thread

    一个线程断下来之后,可以通过在线程窗口切换,到其它线程中继续运行,IntelliJ IDEA里在这里切换

    可以看到exec-10线程和exec-4这两个线程都处于RUNNING状态,切换到任何一个都可以继续运行。

    (可以写一个多线程的应用,同时向ArryList这一类非线程安全的容器中存放内容,然后观察为什么它们是线程不安全的,会出现什么问题)

    建议:创建线程时建议起一个有意义的名字,至少是可以识别的名字,否则在这里都不能区分出哪个是自己的线程,方便切换

    2.后退执行


    有些时候我们在debug代码时,每个方法都进入单步调试,就会出现观察一个变量值的变化时,某个方法没跟进去,结果值就变了,不得不重来一次。
    后退执行的功能,可以后退,在IDE里被称为Drop Frame

    这个功能,在Drop了当前这个Frame之后,已经改变的变量值不会恢复。比如你向当前调用方法里传入了一个Map,并且在方法中向Map里添加了内容,那在Drop到调用该方法的地方时,Map不会恢复到之前的状态。
    但是在该方法再次被调用时,你可以观察Map什么时候被改变的,至少不需要再重跑一遍程序了

    3.条件断点


    在添加断点的时候,可以为断点增加一定的条件,这样,在指定的条件满足时,断点才会生效
    IntelliJ IDEA内,在断点上右击,会弹出如下图的条件框,输入指定的条件即可

    有了条件断点,不符合条件的代码就直接跳过了

    4.片段代码


    在IDEA里有一个执行代码片断的功能,可以在当前代码的上下文内,执行你临时写的代码。
    比如,当前方法传入一个List,但这个方法里少一个后面条件需要使用到的元素,此时可以临时使用片断代码执行的功能,添加一个进去。
    在IntelliJ IDEA里,这个上面红框,像个小计算器的按钮就是临时执行的功能,点击之后,会弹出按钮下方这个Evaluate Expression的框,输入代码,点击右下角的Evalute即可,返回值会显示在Result处

    这就就相当于临时改变了变量内容
    然后,调用对象的方法,执行功能,获取属性值。。。。

    5.查看变量修改值


    IDE在调试代码时都提供了一个观察当前上下文变量值的窗口,其实除了查看之外,一些非final的基本类型,还可以直接在此处修改值,这样如果多次循环执行时,每次可以恢复到期望的值,不需要重启程序

    调试快捷键:

      F9:恢复程序
      Alt+F10:显示执行断点
      F8: 跳到下一步
      F7:进入到代码
      Alt+shift+F7:强制进入代码
      Shift+F8:跳到下一个断点
      Atl+F9:运行到光标处
      ctrl+shift+F9:debug运行java类
      ctrl+shift+F10:正常运行java类
      Alt+F8:debug时选中查看值

  • 相关阅读:
    Android获取网络图片应用示例
    VC操作MPP文件
    带"叉叉"的GridView
    持续集成之路 —— Mock对象引起的测试失败
    一次httpserver优化的经验和教训(silverlight游戏
    独立开发人员的自由之路 ——1
    Python标准库:内置函数chr(i)
    Matlab The Bisection Method
    ELF解析(part one)
    文件打开的过程——调用fd=open()时操作系统所做的工作
  • 原文地址:https://www.cnblogs.com/qinxu/p/9318695.html
Copyright © 2011-2022 走看看