关于idea的debug调试

Debug

debug

  1. debug的定义

    debug是供程序员使用的程序调试工具,在idea中集成了这个工具,所以我们可以在idea中用debug来调试程序。

  2. debug的作用

    • 可以用于查看程序的执行流程(本次课先是使用这个功能)
    • 也可以用于追踪程序执行过程来调试程序。
  3. Debug模式操作流程(下面是怎么看程序执行流程的基本debug操作)

    1. 添加断点

      选择要设置断点的代码行,在行号的后面单击鼠标左键即可,然后就会出现一个红点,如图

关于idea的debug调试_第1张图片

  1. 运行加了断点的程序

    在代码区域右键选择Debug执行,如图

关于idea的debug调试_第2张图片

  1. 看哪里

    我们需要看的地方就是Debugger窗口和Console窗口

    debugger窗口的frames(栈帧的意思)窗口显示:代码执行到那个包下的什么类的什么方法,执行到第几行。variables显示程序执行到当前位置时,存在什么变量,且变量的值是什么。

关于idea的debug调试_第3张图片

  consolt(控制台的意思)窗口,显示程序执行到目前位置控制台的输出是什么。(还有就是程序debug不是程序会停止到你的断点位置嘛,你怎么继续让程序执行呢,就按F7或者点击下面图中那个step into那个按钮,这样就程序就会再向下执行一行,然后停止)

关于idea的debug调试_第4张图片

  1. 删除断点

    想一个个来删除断点,可以左键点击那个想删除的断点

    想删除多个断点可以这样,如图(先点击图中的这个和微信一样的图标,然后光标选中你想要去除的断点,要是你的光标选中的是这个java line breakpoints的话,然后点击那个减号,这下面三个断点都是会没有的。要是你的光标选中下面的Demo1.java:7然后点击减号,就会使第七行的这一个断点消失)

关于idea的debug调试_第5张图片

  1. 停止程序

    要停止程序你可以点击下一步下一步(F7)一直点击,让程序运行完,程序就停止了

    或者你要中途停止,不想程序运行完就退出程序的话,你可以点击stop,如图

关于idea的debug调试_第6张图片

  1. 注意:

    • debug的光标显示的那一行,是程序即将要执行那一行,相当于程序执行光标显示的那一行前停下来,然后给你看他当前的可以访问的变量值。当前访问不到的变量他看不到。

    • debug用step into会进入非官方类库的方法里面。比如你自己写的方法,你运行到的时候,点击stop into就进去了。(debug光标正好显示到你自己写的方法,然后你step into就进去你方法了)

    • 注意,要是debug的时候遇到Scanner的next方法要你输入数据,你没有输入,就点击不了debug。

    • debug可以进入你自己写的方法,要是想进入系统类库的方法就得用force step into(快捷键alt+shift+F7)这个按钮了,这个按钮在step into右边。这个按钮的话,可以强行进入某个方法。比如光标指向System.out.println(“”);这句语句,你点下step into就是执行这个语句,但是不进去,但是要是光标在这句语句上的时候,你点击force step into就能进去这个println()方法里面看他的具体实现。

    • step over就是图中第一个,指箭头的那个。这个用这个按钮的话,就是不会进入方法,即使是自己写的方法也进不去。但是方法会执行。比如,你光标在f();这个语句上,你点击step over就会直接有f()方法的执行,但是不会跳到f()方法里面,所以你直接可以看到这个f()方法执行效果了。这个也是一步一停的,只是你不进方法而已。

      在这里插入图片描述

    • step out,就是图中的第四个按钮,作用是你用step into或force step into进入到某个方法里面,突然想出来了,直接执行完该方法的剩余语句,光标回到调用这个方法的那个语句且停在那里(相当于这个调用方法还是没有执行,即这个调用方法的语句还是下一句要执行的语句),你就可以用这个按钮。

    • drop frame(中文意思是:丢掉这个栈帧。帧栈就是jvm栈中的一个方法,你抛弃了那个帧栈,自然就是回到了调用前的那个值了,你要return回来,才相当于这个语句做完了,不然中途那个方法没有执行完,相当于那个方法没有执行。),在上面图中的第五个按钮,这个按钮就是当你调试的时候执行到某个语句程序抛出异常了,你可以点击这个按钮回到调用这个方法之前,就是光标回到原来调用这个方法的那个语句。比如,下面你抛出异常了,你要是点击step into继续执行,程序就停止了,你要是点击drop frame这个按钮就回到了调用g()的地方,且程序回到不抛异常的状况,这个按钮可以让你看到是原来什么地方出现问题了,怕你忘了原来代码调用这个方法的地方的代码长什么样了。这个方法不一定要都得遇到异常才用,没有遇到异常的时候也可以用,可以用来看一下原来调用这个方法的地方长什么样。

关于idea的debug调试_第7张图片

关于idea的debug调试_第8张图片

  1. resume project(意思是:继续项目)这个按钮,即下图中都圈起来的第二个按钮,程序就不会一步一停,比如程序先执行到第一个断点,然后你点击这个resume project,程序就会继续向下执行,直到下一个断点处再停下来。就是这一个断点到下一个断点之间不用一步一停。

    关于idea的debug调试_第9张图片

  2. rerun project(意思是:重新运行项目),上图第一个按钮,这个按钮的作用就是字面的意思,重新开始debug这个代码,相当于停止了原来的debug的代码,重新debug。

你可能感兴趣的:(intellij-idea,java,ide)