Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何调试服务器_Java_Debugging - Fatal编程技术网

Java 如何调试服务器

Java 如何调试服务器,java,debugging,Java,Debugging,我有一台服务器将在另一台机器上运行,我需要用两台不同的机器进行调试。有没有一种方法可以虚拟地调试服务器,因为在我的机器上一切正常,但当我把它放在另一台机器上时,一切都错了?我没有另一台机器(我只能托管并查看结果) public类fss{public static void main(String[]args)抛出IOException{ServerSocket ServerSocket=null;布尔侦听=true;布尔允许=true;//int-port=Integer.parseInt(ar

我有一台服务器将在另一台机器上运行,我需要用两台不同的机器进行调试。有没有一种方法可以虚拟地调试服务器,因为在我的机器上一切正常,但当我把它放在另一台机器上时,一切都错了?我没有另一台机器(我只能托管并查看结果)

public类fss{public static void main(String[]args)抛出IOException{ServerSocket ServerSocket=null;布尔侦听=true;布尔允许=true;//int-port=Integer.parseInt(args[0]);int-port
= 60000;
试一试{
serverSocket=新的serverSocket(端口);
}捕获(IOE异常){
System.out.println(“无法在端口上传输:“+端口”);
系统退出(-1);
}
边听{
//以数字形式获取客户端的ip
允许=真;
Socket=serverSocket.accept();
DataOutputStream outToClient=新的DataOutputStream(socket.getOutputStream());
字符串clientAddress=socket.getRemoteSocketAddress().toString();
clientAddress=clientAddress.substring(1);
for(int i=0;i

}您必须在服务器JVM上启用调试。 这通常通过以下JVM参数完成-

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

然后,您需要使用服务器的IP地址和上面的调试端口-8787连接到进程。其中一个答案已经指出了如何在服务器上启用JDWP。这需要您具有适当的权限才能打开必要的端口

如果您没有此权限,我将谦恭地建议您使用记录器。在您对运行时环境没有太多控制的情况下,您的代码完全没有任何日志记录调用

您可以从Java-
Java.util.logging
中使用日志框架开始,但是您会发现log4j或slf4j更直观

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