「java脚本调试」java的调试
今天给各位分享java脚本调试的知识,其中也会对java的调试进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、如何调试java程序
- 2、如何实现远程调试java代码
- 3、java程序调试的5种方法
- 4、java如何调试
- 5、java调试
如何调试java程序
采用打断点的方式,可以观察变量值的变化,从而起到调式程序的作用。
在需要调试的代码前面打断点。
通过Debug Character方式运行程序。
Step Over(F6)执行下一步
注:执行过程中将光标移到变量下面,可以查看每一步变量的值。
如下图:
如何实现远程调试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调试启动。
address=ip:port,ip需要修改为本地的对外IP。
这样远程项目启动时就连接到本地,方便调试项目启动不了的问题。
java程序调试的5种方法
1.debug。断点调试。
2.输出消息。system.out.println();来调试。
3.动态代理(Dynamic
Proxy)。动态代理是一个特定的Java特性,它允许开发者引入proxy类,加进某一给定类之前,并通过某一给定接口截获所有调用。你可以在很短时间内用一个普通代理设置一个虚拟事件处理器,来查看事件发生顺序。当需要理解事件处理器时这是最简单和快捷的方法。
4.运行时剖析器(Run-time
Profiler)。剖析器是通过特定的JVM
hooks在系统中跟踪所有调用的强大工具。但是用它来跟踪执行过程是大才小用。
5.Aspects。面向方面编程。它是截获你的代码执行既快速又容易的方法。你可以围绕方法、构造器、属性访问等等有选择地设置hook,而不需要修改原始代码。在这些hook中,你可以打印调试消息。
1.2常用的。3.4.5网上找的。
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.我们常说的断点(breakpoints)是指line breakpoints,除了line
breakpoints,还有其他的断点类型: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调试
第一问:
public class Point
{
int x, y;
float a, b;
static int z;
void setValue(int m, int n)
{
this.x = m;
this.y = n;
}
void setValue(float a, float b)
{
this.a = a;
this.b = b;
}
static void output()
{
Point point = new Point();
System.out.println("x=" + point.x + ", y=" + point.y + ", a=" + point.a + ", b=" + point.b + ", z=" + Point.z);
}
}
第二问:
public Point()
{
super();
}
public Point(int z1, int z2, float z3, float z4)
{
this.x = z1;
this.y = z2;
this.a = z3;
this.b = z4;
}
第三问:
public static void main(String[] args)
{
Point pt1 = new Point();
pt1.setValue(1, 2);
pt1.setValue(3, 4);
Point pt2 = new Point();
pt2.setValue(5, 6);
pt2.setValue(7, 8);
}
第四问:
Point pt3 = new Point(9, 10, 11, 12);
第五问:
System.out.println("x=" + pt1.x + ", y=" + pt1.y + ", a=" + pt1.a + ", b=" + pt1.b);
System.out.println("x=" + pt2.x + ", y=" + pt2.y + ", a=" + pt2.a + ", b=" + pt2.b);
第六问:
System.out.println("pt1.z=" + pt1.z);
System.out.println("pt2.z=" + pt2.z);
System.out.println("pt3.z=" + pt3.z);
pt1.output();
pt2.output();
pt3.output();
System.out.println("Point.z=" + Point.z);
Point.output();
output();
希望可以帮到你。
java脚本调试的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java的调试、java脚本调试的信息别忘了在本站进行查找喔。
发布于:2022-12-06,除非注明,否则均为
原创文章,转载请注明出处。