intellij idea 怎么打断点调试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了intellij idea 怎么打断点调试相关的知识,希望对你有一定的参考价值。

本人菜鸟,比较笨,初用intellij idea,这个IDE和Eclipse还不一样,简直是大颠覆,现在连最简单的断点调试都跑不通...很少郁闷,望大神指教!~
我启动项目的时候没有在intellij idea这个工具中启动,而是直接去tomcat的bin目录下点那个startup.bat启动的,这时候要怎么断点调试呢?求教各位大神~

下面是intellij idea界面的布局图,我用的版本是14.0.1。

参考技术A 直接把tomcat配置到intellij idea 里面去,不就行了。怎么配置,百度搜索就行了。第二种方法, 启动tomcat的时候,别用startup.bat ,用catalina.sh jpda start(linux 是这个,window 照着改) 这个命令去启动,相当于 调试启动,会开放一个端口 默认好像是 8000,然后用 intellij idea 或者 eclipse 配置 对上这个端口,配置好应用,就可以调试了。 tomcat 远程调试 也是这种方式。去搜索下 jpda tomcat 这两个关键词,本回答被提问者和网友采纳

IntelliJ IDEA中Debug的使用技巧

当运行结果跟我们设想的不一致时,我们就可以用debug进行代码调试,下面是我在日常开发中对debug的一些小结


 (一)基本介绍

本篇文章是基于IntelliJ IDEA2018.3.2版本,Debug模式的图标因为不同版本有点点小区别,但是功能基本一样。

技术图片如图红色框框甲壳虫模样的便是我们本文中的debug启动模式,在日常开发中也是用这个启动开发项目,文章候面会详细对比各种启动方式的异同

打断点方法和Eclipse类似,只需要在自己想要调试的代码左边行号栏单击左键就可以,或者快捷键Ctrl+F8 打上/取消断点,下面先谈谈如何进行debug的优化设置,如图

技术图片

如上图标识所示,设置 Debug 连接方式,默认是 Socket 。 Shared memory 是 Windows 特有的一 个属
性,一般在 Windows 系统下建议使用此设置,内存占用相对较少。
2 进入Debug运行模式
设置断点:在代码的左边栏单击,出现 技术图片,则说明已经此行代码设置了断点,可对任意多行设置

取消断点:单击 技术图片就取消了断点

技术图片

进入Debug模式:代码空白处右键,然后选择 Debug HelloWorld.main() ‘;或快捷键 Ctrl+F5
Debug启动后,程序会停顿在第一个断点上,debug视图主要界面如下,各个按键分别是什么意思呢?

技术图片

1. Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。

2. Step Over (F8):越过,一行一行地往下走,如果这一行上有方法不会进入方法。

3. Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。

4. Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

5. Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

6. Drop Frame (默认无):回退断点,后面章节详细说明。

7. Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

7右边的小计算器. Evaluate Expression (Alt + F8):计算表达式。

8. 重启项目,快捷键Ctrl + F5,一般在你的代码有改动后可执行这个功能,意味重新启动项目。

9. 恢复程序,快捷键F9,在有多个断点的情况下,会直接跳到下一个断点,如果当前断点为最后一个则直接运行结束。

10. 暂停项目

11. 停止当前启动的项目。快捷键Ctrl + F2

12. View Breakpoints 查看所有断点。快捷键Ctrl + Shift + F8

13..静哑断点,使所有断点无效,类似于无断点运行。选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。例如:加入断点过多,我们在其中某一个断点已经找到问题想要的答案,后面的断点不想继续了,可以点击一下该功能,就可以直接运行到程序结束。

 (二)快捷键一览表

Run                 Shift + F10         运行最近一次运行的函数
Debug               Shift + F9          运行debug最近一次运行的函数
Run                 Alt + Shift + F10   初次运行指定的函数
Debug               Alt + Shift + F9    初次debug运行指定的函数
Stop                Ctrl + F2           停止项目
Step Over           F8                  越过当前函数
Forcce Step Over    Alt + Shift + F8    强制越过
Step Into           F7                  步入当前函数
Force Step Into     Alt + Shift + F7    强行进入当前函数
Smart Step Into     Shift + F7          只能进入当前函数
Step out            Shift + F8          步出
Resume Program      F9                  恢复程序
Evaluate Expression Alt + F8            计算表达式

 (三)查看变量

在Debug过程中,跟踪查看变量的变化是非常必要的,这里就简单说下IDEA中可以查看变量的几个地方

1.在IDEA中,参数所在行后面会显示当前变量的值。

技术图片

2.光标悬停到参数上,显示当前变量信息,非常的方便。

技术图片

3.在Variables控制台里查看,这里显示当前方法里的所有变量。

技术图片

 4.在Watches里,点击New Watch,输入需要查看的变量。或者可以从Variables里拖到Watches里查看。

技术图片

(四)计算表达式

计算表达式,Evaluate Expression (Alt + F8) 。可以使用这个操作在调试过程中计算某个表达式的值,而不用再去打印信息。

1.点击计算表达式按钮或快捷键Alt + F8,你也可以选中某个表达式再Alt + F8,弹出计算表达式的窗口,如下,回车或点击Evaluate计算表达式的值

这个表达式不仅可以是一般变量或参数,也可以是方法,当你的一行代码中调用了几个方法时,就可以通过这种方式查看查看某个方法的返回值。

技术图片

(五)调试技巧

鼠标右键点击断点,调出如下窗口,当然也可以通过快捷键Ctrl + Shift + F8

技术图片

1、断点条件设置

如上图通过设置Conditionn内容设置断点条件,通过设置断点条件,在满足条件时,才停在断点处,否则直接运行。

如遍历集合或者数组的时候,我们只想当下标等于某个值的时候才进入断点调试。如我希望当 a=a时才进入断点,

技术图片

2、多线程调试

一般debug都是单线程调试,但是开发过多线程应用,有些时候,为了观察多个线程间变量的不同状态,以及锁的获取等,就会想到在代码里加个断点debug一下。在IDE里断点停下来的时候,可以切换到另外的线程中,跑其他的代码,不会互相影响。但是在IntelliJ IDEA里默认是没有开启的。也就是说如果你在IDEA里代码里加断点,虽然一个线程的断了下来,但其他线程的已经执行过了。此处勾选上Suspend,并选择Thread,设置make default之后,也可以开始多线程应用的调试。

技术图片

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

技术图片

3、回退断点

在调试的时候如果点击过快,错过了自己想要关注的那一行,如何能跳回到上一步呢?依靠后退执行的功能,可以后退,就像下棋时悔棋那种功能一样。

所谓的断点回退,其实就是回退到上一个方法调用的开始处,在IDEA里测试无法一行一行地回退或回到到上一个断点处,而是回到上一个方法。回退的方式有两种:

第一种是Drop Frame按钮,按调用的方法逐步回退,包括三方类库的其它方法(取消Show All Frames按钮会显示三方类库的方法)。

技术图片

第二种方式,在调用栈方法上选择要回退的方法,右键选择Drop Frame,回退到该方法的上一个方法调用处,此时再按F9(Resume Program),可以看到程序进入到该方法的断点处了。

但有一点需要注意,断点回退只能重新走一下流程,之前的某些参数/数据的状态已经改变了的是无法回退到之前的状态的,如对象、集合、更新了数据库数据等等。

 

以上是关于intellij idea 怎么打断点调试的主要内容,如果未能解决你的问题,请参考以下文章

windows虚拟机怎么打断点调试

idea走断点的时候怎么显示程序的方法调用栈区

idea断点如何找集合中的值

IDEA-断点、调试、远程JVM调试

xdebug调试ThinkPHP控制器里的方法断点进不去

接口测试之Fiddler下断点调试