java代码调试 java代码调试进入过滤器不出来( 二 )


java如何调试最基本的操作是java代码调试:
1, 首先在一个java文件中设断点 , 然后运行,当程序走到断点处就会转到debug视图下,
2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over,
也就是执行本行代码,跳到下一行,
3,F7是跳出函数
4,F8是执行到最后 。
1.Step Into (also F5) 跳入
2.Step Over (also F6) 跳过
3.Step Return (also F7) 执行完当前method,然后return跳出此method
4.step Filter 逐步过滤 一直执行直到遇到未经过滤的位置或断点(设置Filter:window-preferences-java-Debug-step Filtering)
5.resume 重新开始执行debug,一直运行直到遇到breakpoint
6.hit count 设置执行次数 适合程序中的for循环(设置 breakpoint view-右键hit count)
7.inspect 检查 运算 。执行一个表达式显示执行值
8.watch 实时地监视变量的变化
9.java代码调试我们常说的断点(breakpoints)是指line breakpoints,除了line
breakpoints,还有其他的断点类型java代码调试:field(watchpoint)breakpoint,method
breakpoint,exception breakpoint.
10.field breakpoint 也叫watchpoint(监视点) 当成员变量被读取或修改时暂挂
11.添加method breakpoint 进入/离开此方法时暂挂(Run-method breakpoint)
12.添加Exception breakpoint 捕抓到Execption时暂挂(待续...)断点属性:
1.hit count 执行多少次数后暂挂 用于循环
2.enable condition 遇到符合你输入条件(为ture\改变时)就暂挂
3.suspend thread 多线程时暂挂此线程
4.suspend VM 暂挂虚拟机
13.variables 视图里的变量可以改变变量值,在variables 视图选择变量点击右键--change value.一次来进行快速调试 。
14.debug 过程中修改了某些code后--〉savebuild--resume--重新暂挂于断点
如何实现远程调试java代码1. 远程debug调试java代码
1.1 主动连接调试
首先需要远程服务配置启动脚本:
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
如果是启动jar包 , 指令:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar test.jar
这里-Xdebug是通知JVM工作在DEBUG模式下,-Xrunjdwp是通知JVM使用(java debug wire protocol)来运行调试环境 。
transport是监听Socket端口连接方式(也可以dt_shmem共享内存方式,但限于windows机器,并且服务提供端和调试端只能位于同一台机) 。
server=y表示当前是调试服务端,=n表示当前是调试客户端 。suspend=n表示启动时不中断(如果启动时中断 , 一般用于调试启动不了的问题) 。
address=8000表示本地监听8000端口 。
远程服务(tomcat/jboss)启动成功后 , 本地Eclipse对需要调试的地方打上断点,
然后项目右键启动远程调试:Debug as-Debug Configurations-Remote Java Application 。
Host为远程主机IP,Port为远程监听调试端口 , Connection Type为:Standard(Socket Attach),
点击Debug,然后打断点 , 远程服务运行到断点处本地就会中断,然后进行调试 。
1.2被动连接调试
首先需要Eclipse配置监听,如主动连接调试的Eclipse配置图片,Connection Type选择:
Standard(Socket Listen),配置本地监听端口,比如默认8000 。点击Debug开始等待远程连接调试 。
然后配置远程服务启动脚本:
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y"
如果是调试jar包,指令:
java -Xdebug -Xrunjdwp:transport=dt_socket,address=127.0.0.1:8000,suspend=y -jar remoting-debug.jar
参数含义和主动连接调试一样,只是这里suspend=y表示启动时就中断,需要连接本地IDE调试启动 。

推荐阅读