eclipse总结-debug

快捷键

f5:进入方法中

f6:单行执行

f7:跳出方法

清除断点方法:

run-----removebreakpoint

debug模式

 

断点

在执行语句前双击添加断点,再次双击可以取消,在debug界面可以选择应用的断点,也可以批量删除断点。
对于web项目,想要使用断点,需要debug方式启动
对于java项目,想要使用断点,需要debug as
debug模式下,选中要查看的变量,右键选择watch可以看里面的值
 
0

条件断点

选择断点,右键,断点属性
 
0
或者在debug界面选择断点,右击选择断点属性
 
0
 
0
也可以直接在debug界面直接选中断点,添加条件
 
0
如果布尔条件为真,就会执行该断点,否则将会跳过往下执行。
如程序
 
0
用上面的12行的条件断点,b的值为22的时候才会执行12行代码,这里b=21所以会直接跳过12行直接去执行第13行去了。
 

异常断点

在断点视图中,有一个J!标记按钮!我们可以使用该按钮来添加一个Java异常断点。例如,我们想让程序在遇到空指针异常(NullPointerException)时,仍然能继续调试,那么我们可以使用该按钮来添加一个异常断点!
 
0
选择异常类型
 
0
然后会出现
 
0

监视点

这是一个非常好的功能,当选定的属性访问或修改程序时,程序会停止执行并允许进行调试。在Outline视图中选择一个类变量并从上下文菜单中选择切换监视点,属性监视点将会被创建,在断点(Breakpoints)视图中会把所有监视点用列表的形式显示出来。
 
0
就会出现下面的视图
 
0
 
如:
a处添加了监视点,虽然13行没有设置断点,但debug运行会在13行停住。
 
0

查看变量的内容watch

选择一个变量,点击右键,选择watch,来查看变量或表达式的内容或值
 
0

逻辑结构

主要用来展示map之类的collection数据结构存储的值的,它只展示存储值的逻辑部分,而屏蔽了数据结构详细的内部结构,更方便我们查看map之类collection结构里存储的值,推荐使用。
查看说有变量:
 
0
查看到所有变量的值,包括成员变量,局部变量等
展开后本来是这样
 
0
可以点击指定位置来看map的逻辑结构
 
0
 
 
这个按钮就是展示逻辑结构的按钮,下面两个图,上图是不展示逻辑结构,下图是展示逻辑结构,很明显,下图的结构可读性更强,可以专注于debug的变量。
 
 

环境变量

并不是在系统属性中添加环境变量,我们可以在编辑配置对话框中很方便地进行添加。
 
0
 
0
来进行添加

Drop to Frame

调试期间,可以重新跳到调用堆栈框架的开始处执行,并且变量值也会回到最初。根据回档调整堆栈的深度,这个功能的主要用途是所有变量状态可以快速回到方法开始执行时候的样子,然后你可以重新进行一遍一遍执行,这样就可以在你关注的地方进行多次调试,但是在执行过程中也会产生一些副作用,比如插入到数据库里面的数据是无法删除的!
debug as开始,或者debug方式启动会到达这个界面
 
0
如已经运行到14行了,这里双击上面的标有11行的那条,就会重新回到11行开始执行
 
 
0
 
 
使用方式:选择调用栈中的一桢,点击按钮“跳到桢”
 
0

过滤

当我们进入(F5)方法的时候,我们还可以访问其外部库(比如java.*),我们可能不需要这个库,就可以在Perference选项卡页面添加一个过滤器来排除这个包。
 
0
 
 
0

 Inspect

inspect用来查看某个表达式的之,对于变量值debug很容查看,但是对于一个表达式的值就不容易查看
如:
public void myTest(){
"a".equals("a");
}
看方法中的那句的值
具体做法是选中这行表达式,然后右击->inspect,或者更方便的快捷键组合:ctrl+shift+i,会弹出如下的展示表达式结果的框:
 
0
 
0
也可以选中表达式点击右键,选中watch,在Expression窗口中查看变量或表达使的值
 
0
或者ctrl+shift+d查看返回结果
 
0

远程debug

前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致,也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动。

步骤

第一种:

在startup.sh文件的开头加上

declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6666"

不可换行

第二种

服务器如果是window的tomcat:

 把tomcat/bin/catalina.bat配置文件里的

set JPDA=

后面加上

SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

服务器如果是linux的tomcat

在tomcat的catalina.sh文件的正文的第一行添加:

JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"

启动远程主机上的tomcat

/usr/local/bin/apache-tomcat-7.0.69/bin/startup.sh

ps aux|grep tomcat

监控tomcat状况

可以看到配置是成功的

 

其中6666是我们自定义的用于调试的端口号,可以自己指定

-Xdebug是通知JVM工作在DEBUG模式下,

-Xrunjdwp是通知JVM使用(Java debug wire protocol)来运行调试环境。该参数同时了一系列的调试选项:

transport指定了调试数据的传送方式

dt_socket            是指用SOCKET模式

server=y/n            VM 是否需要作为调试服务器执行。

suspend=y/n           是否在调试客户端建立连接之后启动 VM 。

如果您刚开始就想调试的话,将参数设置为"suspend=y",这样Eclipse会远程连接Java应用程序。

  如果你想先运行项目,然后连接Eclipse,那么可以将参数设置为"suspend=n",这样的话,Java应用程序会正常运行,之后Eclipse会开始远程连接。

  • 调试客户端

针对项目-》右击-》debug as-》debug configuration

如果你想从Eclipse中关闭运行在Linux平台上的 Java应用程序,请选中"Allow termination of remote VM”复选框。

注意:

报错Failed to connect to remote VM. Connection timed out.

设置的时间都大点

报错:Failed to connect to remote VM. Connection refused. Connect

方法1:要改为native,这个原因是Eclipse 代理设置问题

方法2:

服务是在root 账户下启动的,关掉服务杀掉进程,然后用普通用户登录重启服务!

方法3:

可以调试端telnet 192.168.0.118 8000 看能不能进入,进入不了就是没有开放

设置的这个debug端口,服务器端防火墙没有开放,所以要开放这个端口,比如这里

esc  shift+zz 保存文件

service iptables restart 重新启动

 

  • 点击debug,运行效果如下,接下去,就和本地调试一模一样。

访问,就能够用断点进行拦截

posted @ 2022-08-02 16:59  星光闪闪  阅读(365)  评论(0)    收藏  举报