当前位置: 首页 > 后端技术 > Java

在IDEA中使用Debug真是太爽了!

时间:2023-04-01 17:51:13 Java

Debug介绍为什么要用Debug?眼看十二月就要过去了,张三躺在大学宿舍的床上。此刻,他又是高兴又是担心。很高兴很快就可以和女朋友一起过年了,但是又担心自己的java期末作业和一大堆错误。张三的英语不好,控制台上的错误提示他也看不懂,越想越烦躁。突然,张三好像灵光一现,打开IDEA,兴奋的敲了敲。正在参加无黑的室友见状,不由有些好奇,纷纷跑过去看他的电脑:原来张三正在复制粘贴一堆打印报表。一个室友看不下去问他:“你调试程序为什么不用Debug?”“你写那么多系统语句不麻烦吗?在作业结束时,你必须将这些打印语句一一删除。这是浪费时间。”所以我们在写程序的时候,不要一遇到问题就写一堆系统打印语句,那实在是浪费时间。使用Debug可以跟踪程序的执行过程,快速定位程序异常的位置,帮助我们快速找到错误的代码。2、Deubg2.1的Debug模式下打开界面先来看一下IDEA中Debug模式下的界面:以Debug模式启动服务。在开发的时候,我一般都是直接在Debug模式下运行程序,这样可以随时调试代码。断点,我们可以在行号栏左侧直接点击设置,也可以使用快捷键Ctrl+F8来设置或取消断点。调试窗口:当请求到达第一个断点时,调试窗口将被激活。Debug调试按钮:我们在调试过程中主要用到这些按钮,鼠标悬停按钮上可以显示快捷键。调试服务按钮:在这里我们可以开启和关闭调试服务等。方法区:这里会显示调试过程中执行的方法。参数区:这里会显示当前断点之前所有参数的值。2.2开启Debug先设置断点,然后在Debug模式下运行:注意:我们也可以在程序执行过程中添加/删除断点。3、Debug中常用的调试按钮3.1跳转到当前执行代码的行。我们先在一个页面设置断点,然后切换到其他页面。点击这个按钮,发现跳转到代码执行的那一行:Step3.2Stepover就是一步一步往下走,跳过所有的方法:即使在上面的例子中遇到了系统print方法和test1方法,它将跨过并继续执行。3.3SteppingIn如果在执行过程中遇到自定义方法,可以直接进入该方法,而不是JDK类库中的方法。上面的例子中,遇到系统方法会自动穿越,但是遇到自定义方法会进入方法执行,执行完后又回到方法的调用处。3.4强制步入无论遇到JDK类库方法还是自定义方法,都会进入该方法执行。在上面的例子中,无论是遇到JDK类库中的系统方法还是自定义的test1方法,都会进入该方法执行。3.5StepoutStepout是指从进入的方法返回到方法调用。在上面的例子中,我们进入了test1方法的内部,当点击了stepout按钮的时候,我们又回到了调用test1方法的地方。3.6回滚断点回滚断点是指可以回滚到指定方法的调用处。在上面的例子中,我们依次执行了test1、test2、method2方法,但是我们可以选择直接回退到test1方法的调用处。跳出断点和回滚断点的区别:都是返回到方法的调用。Step-out只能返回到当前方法的调用。回滚断点可以返回到指定方法的调用,前提是该方法已经执行过。.3.7定位到游标如果我们写的代码有几百行,一步步执行起来会很费时间。这时候我们可以先把光标放在指定的位置,然后点击按钮定位光标,代码就会立即执行到光标处。在上面的例子中,我们将鼠标光标移动到下面的某一行,然后点击按钮定位光标,代码立即执行到这一行。3.8计算表达式计算表达式可以帮助我们计算一些表达式的返回值。从上面的例子可以看出,我们可以在调用某些方法之前使用一些自定义的参数来计算方法的返回值。4、查看参数4.1参数所在行后面的显示4.2光标浮动视图光标悬停在参数上显示当前变量的信息。我经常使用这种方法,非常方便。4.3在变量中查看当前方法中的所有变量都显示在这里。4.4在Watches中查看在Watches中,点击NewWatch,输入要查看的变量:条件断点有时候我们的代码中包含很多for语句,但是在断点调试的时候会执行很多次。这时,我们可以选择一个断点,用鼠标右键设置一个条件。只有当条件满足时,才会在此处执行断点。在上面的例子中,我们为断点设置了一个条件:i==50,所以当我们在Debug模式下运行程序时,发现此时i为50。6、调试服务设置按钮6.1执行到下一个断点直到按钮的功能结束:如果下面有断点,则跳转到下一个断点。如果不是,则程序执行结束。6.2断点静音有时候我们走到某一步就已经知道结果了,但是后面还有一堆断点。我想禁用这些断点,但我仍然想将这些断点用于第二个跟踪,因此我可以使用断点来静音。6.3查看/清除断点我们需要在执行完代码后清除所有断点,但是一个一个清除太费时了。此时可以使用该按钮查看所有设置的断点,或清除所有断点。6.4返回第一个断点代码执行到某行想返回第一个断点:多线程调试因为CPU执行线程的顺序是随机的,但是我们可以通过断点调试自定义下一个的执行线。先将两个线程的断点都设置为线程模式:然后在方法区选择指定的线程执行: