Eclipse下远程模块调试的研究及实现
- 格式:pdf
- 大小:180.96 KB
- 文档页数:5
Tomcat配置修改Tomcat\config.properties找到mode=prod,对比内容,如果没有以下3行,进行追加,同时注释掉mode=prodmode=dev**********设置tomcat远程调试***********jpdaAddress=8002 //表示要远程调试连接的端口号jpdaTransport=dt_socketshell中进入Tomcat目录cd ..cd Tomcat执行以下命令ant -f config.xml configureScripts#ant -f config.xml -projecthelp无用执行完毕后,打开Tomcat/bin目录下的wttomcat_start.bat,查找以下内容,如果没有则追加*********************启用JPDA *********************************rem Un-rem next line to enable debugger attaching to this instance of Tomcatset JAVA_OPTS=%JAVA_OPTS% -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=8002,server=y,suspend=n重启Tomcat目的:使本机和target 服务器连接起来说明:JPDA简介顾名思义,JPDA为Java平台上的调试器定义了一个标准的体系结构。
该体系结构包括3个主要组成部分:JVM TI、JDI和JDWP。
JVM TI的全称是Java Virtual Machine Tool Interface,它定义了JVM为了支持调试而必须提供的功能及相应的访问接口。
这些访问接口是以本地语言的形式提供的,由JVM(比如Sun公司的HotSpot VM)负责实现。
不过,JVM TI只是JVM提供的一系列函数,调试器(特别是远程的调试器)如何调用呢?其实啊,JVM TI的直接客户端并不是调试器,而是一个称为“JPDA back-end”的东东。
Eclipse 远程调试 WebSphere Application Server (WAS)我们用 Eclipse 开发 Web 项目时,多会用某个插件(如 MyEclipse) 来对Tomcat 中的应用进行单步调试。
而要调试 WAS 下的应用,MyEclipse 也是可以的,但在 MyEclipse 中启动 WAS 比较慢,且需要在本地安装一个 WAS。
再有便捷点的方法是用 WSAD (Websphere Studio Application Developer) 或它的升级版 RAD (Rational Application Developer),它们内置了对 WAS 很好的支持,不过也需要本机安装了 WAS,WSAD/RAD 肥大的身躯自是不必说。
若要让 WSAD/RAD 进行远程调试,似乎还得在Server 上安装个 IBM Agent Controller。
实际上 WAS 就支持远程调试的设置,打开它,你只需要用 Eclipse Debug 中的 Remote Java Application 功能连接到服务器上相应端口即行。
设置很简单,这样的办法你甚至可以在闲时偷偷的调试一下生产环境的 WAS 应用以验证测试环境难以/无法重现的问题。
具体做法如下(WAS 5.x 和 6.x 下的操作基本相同):一:配置 WAS,打开调试服务进到 WAS(或ND) 的管理控制台,在服务器->应用程序服务器中,点击要启用调试服务的应用服务器,然后进入调试服务,勾选上启动(指定当服务器启动时服务器是否将尝试启动指定的服务。
)。
JVM 调试端口默认为 7777,注意该端口不能有冲突(如有多个应服务器要启用调试服务时,需要指定别的端口)。
其他选项默认,或根据实际来设定。
确定、保存后重启应用服务器,WAS Base 版需要回到操作系统下重启,如果是在 ND 管理控制台下,可直接在页面中重启应用服务器。
学习使用远程调试和追踪问题的技术远程调试是指利用远程连接技术,通过网络连接到另一台计算机进行程序的调试和追踪。
在软件开发和系统维护过程中,经常会遇到一些比较难以定位和解决的问题,此时远程调试技术就可以发挥作用。
本文将介绍远程调试和追踪问题的技术,包括远程调试的基本原理、远程调试工具的选择和使用、远程调试问题的定位和解决方法等内容。
一、远程调试的基本原理远程调试的基本原理是利用网络连接技术,将本地计算机与远程计算机建立连接,并通过调试工具在远程计算机上进行程序的断点设置、变量查看、函数跟踪等操作。
通常情况下,远程调试需要满足以下条件:1.网络连接:远程计算机与本地计算机之间需要建立可靠的网络连接,以便进行数据的传输和通信。
常用的网络连接技术包括局域网、互联网、VPN等。
2.调试工具:需要使用支持远程调试的调试工具,例如GDB、LLDB、Visual Studio等。
3.调试协议:远程调试需要通过一定的调试协议进行通信和数据交换。
基于上述原理,远程调试的过程通常包括以下几个步骤:1.建立连接:通过网络连接技术,将本地计算机与远程计算机建立连接。
2.启动调试工具:在本地计算机上启动调试工具,并选择远程调试模式。
3.连接目标:通过调试工具连接到远程计算机,并选择需要调试的程序。
4.远程操作:在本地计算机上进行断点设置、变量查看、函数跟踪等操作,观察远程计算机上程序的运行状态。
二、远程调试工具的选择和使用远程调试工具是实现远程调试的关键。
常用的远程调试工具包括GDB、LLDB、Visual Studio等。
这些工具提供了丰富的调试功能,可以帮助开发人员进行远程调试和问题追踪。
1. GDBGDB是一款功能强大的调试工具,支持多种操作系统和编程语言。
它提供了丰富的调试功能,包括断点设置、变量查看、函数跟踪等。
GDB通过调试协议与目标程序通信,可以实现远程调试的功能。
使用GDB进行远程调试的步骤如下:(1)在本地计算机上安装GDB,并确保本地计算机与远程计算机可以正常通信。
使用eclipse远程调试weblogic操作方法如果要在eclipse中远程调试weblogic,请使用如下方式:打开startWebLogic.cmd,并调整执行java命令的地方:%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JA VA_OPTIONS%=%SERVER_NAME%-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy " weblogic.Server调整为@REMORG : %JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS % %JAVA_OPTION S% =%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy " weblogic.Server @REM Surport Remote Debug :set JAVA_DEBUG=-Xdebug -Xnoagent-Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend =n%JAVA_HOME%\bin\java %JAVA_VM% %JAVA_DEBUG% % MEM_ARGS% %JA VA_OPTIONS% =%SERVER_NAME%-Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE%-Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy " weblogic.Serveraddress=4000远程启动调试端口,可以自行修改。
Eclipse远程调试Tomcat1.应用场景通过Java的JPDA远程调试将本地源码与部署服务器连接起来实现调试,其中要注意的是:1)程序源码与服务器上发布的编译过的代码版本保持一致,保证调试定位准确。
2)调试的过程中,部署在应用服务器上的项目是出于DEBUGE模式的。
2. 配置步骤2.1. 配置Tomacat调试模式1) 方式一启动Tomcat远程调试功能的另一种方法:打开apache-tomcat\bin 目录下的catalina.bat 文件,通过设置CATALINA_OPTS参数即可;同时还可以设置Java_home,JVM参数等…set CATALINA_OPTS=-server -Xdebug -Xnoagent piler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000启动jdpa.bat ,JVM会使用socket方式,打开8000端口并挂起,等待客户端接入。
如图:Windows系统: apach/bin/startup.bat开始处中增加如下内容:1.SET CATALINA_OPTS=-server -Xdebug -Xnoagent piler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address =8788Linxu系统: apach/bin/startup.sh开始处中增加如下内容:declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent piler=NONE -Xrunjdwp:transp ort=dt_socket,server=y,suspend=n,address=8788"2.linux打开端口命令的使用方法。
nc -lp 8788 &(打开8788端口)4.查看是否打开8788端口netstat -an | grep 87882) 方式二复制startup.bat 为jpda.bat并做如下配置:set JPDA_TRANSPORT=dt_socket --连接方式set JPDA_ADDRESS=8000 --监听端口set JPDA_SUSPEND=y --是否挂起call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS%2.2. 配置Eclipse远程接入1)打开Eclipse,导入项目源码(与被调试的代码一致)2)打开Debug Configuration选中New—打开debug配置页面Project: 选择被调试的项目Connection Type: 使用SocketAttachHost:tomcat服务器所在IP地址Port:8000(前面配置的监听端口)设置完成后,记得点击Apply按钮。
Eclipse远程调试下紧接着上一片我们的铺垫,到底如何使用远程调试。
Eclipse远程调试主要有两种模式,一种是服务监听模式,另外一种是调试监听模式,一般用前者较多,所以我们就已服务监听模式来举例子验证。
首先环境准备:准备好一个tomcat在A机器上,在B机器上安装eclipse,确保A机器和B 机器之间能够互通,这点很重要,最好能够将防火墙关闭。
本文的tomcat是windows环境,请注意!1.开启tomcat远程debug的服务端口:在tomcat的bin目录中找到catalina.bat打开,在里面添加一下内容:set CATALINA_OPTS=-server -Xdebug -Xnoagent piler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000PS:在catalina.bat不能换行。
2.将编译好的文件放到A中的tomcat里面,启动tomcat:看到红色框里面的内容,表示配置成功!3.在B机器中配置eclipse,eclipse里面有发布在A机器中运行应用的源代码,具体配置如下:源代码:Debug配置:右键新建一个远程应用,得到如下图:Name填写一个名字,这个到无关紧要,自己好急就行;Project这里需要你选择需要调试的项目,不要出错;Host表示调试的对象,我们这里的对象是A机器,所以这里肯定需要输入A 机器的IP地址;PORT表示开启的端口,在前面设置的tomcat时用到的端口。
最后单击Apply,然后点击debug就ok了。
验证,首先在B机器里面的代码打一个短点,如下:在A机器浏览器输入请求地址,如下图:此时可以看见浏览器一直请求,再看看B机器的状态:最后进入断点之后,F8完成debug,看看此时浏览器如下:轻松搞定!至于这样干的好处,那就仁者见仁智者见智咯!。
一、实验目的1. 了解远程调用的基本原理和方法。
2. 掌握使用Java RMI实现远程调用。
3. 熟悉网络编程中的通信协议和编程技巧。
二、实验环境1. 操作系统:Windows 102. 开发工具:Eclipse3. 编程语言:Java4. 网络环境:有线或无线局域网三、实验内容1. 远程调用原理2. Java RMI编程3. 实现远程计算器四、实验步骤1. 远程调用原理远程调用(Remote Procedure Call,RPC)是一种通过网络实现不同主机上的程序之间通信的技术。
它允许一个程序调用另一个程序,就像调用本地函数一样,而无需关心该程序运行在哪个主机上。
远程调用涉及以下步骤:(1)客户端发送调用请求;(2)服务器端接收调用请求,执行操作;(3)服务器端将结果返回给客户端。
2. Java RMI编程Java RMI(Remote Method Invocation)是一种Java语言提供的远程调用机制。
它允许Java程序在不同的主机上运行,并实现远程方法调用。
Java RMI编程步骤如下:(1)定义远程接口:继承java.rmi.Remote接口;(2)实现远程接口:实现远程接口的方法;(3)导出远程对象:使用java.rmi.exportObject()方法导出远程对象;(4)注册远程对象:使用java.rmi.Naming.rebind()方法注册远程对象;(5)客户端调用远程方法:使用java.rmi.Naming.lookup()方法查找远程对象,然后调用其方法。
3. 实现远程计算器本实验实现一个简单的远程计算器,包括加、减、乘、除四种运算。
(1)定义远程接口```javaimport java.rmi.Remote;import java.rmi.RemoteException;public interface Calculator extends Remote {double add(double a, double b) throws RemoteException;double subtract(double a, double b) throws RemoteException;double multiply(double a, double b) throws RemoteException;double divide(double a, double b) throws RemoteException;}```(2)实现远程接口```javaimport java.rmi.RemoteException;import java.rmi.server.UnicastRemoteObject;public class CalculatorImpl extends UnicastRemoteObject implements Calculator {public CalculatorImpl() throws RemoteException {super();}@Overridepublic double add(double a, double b) throws RemoteException {return a + b;}@Overridepublic double subtract(double a, double b) throws RemoteException {return a - b;}@Overridepublic double multiply(double a, double b) throws RemoteException {return a b;}@Overridepublic double divide(double a, double b) throws RemoteException {if (b == 0) {throw new RemoteException("除数不能为0");}return a / b;}}```(3)导出远程对象```javaimport java.rmi.Naming;public class CalculatorServer {public static void main(String[] args) {try {Calculator calculator = new CalculatorImpl();Naming.rebind("rmi://localhost:1099/Calculator", calculator); System.out.println("Calculator服务启动成功!");} catch (Exception e) {e.printStackTrace();}}}```(4)客户端调用远程方法```javaimport java.rmi.Naming;public class CalculatorClient {public static void main(String[] args) {try {Calculator calculator = (Calculator)Naming.lookup("rmi://localhost:1099/Calculator");double result = calculator.add(10, 5);System.out.println("加法结果:" + result);result = calculator.subtract(10, 5);System.out.println("减法结果:" + result);result = calculator.multiply(10, 5);System.out.println("乘法结果:" + result);result = calculator.divide(10, 5);System.out.println("除法结果:" + result);} catch (Exception e) {e.printStackTrace();}}}```五、实验结果与分析通过实验,成功实现了远程计算器,实现了加、减、乘、除四种运算。
Java项⽬开启远程调试的⽅法步骤(tomcat、springboot)当我们运⾏⼀个项⽬的时候,⼀般都是在本地进⾏debug。
但是如果是⼀个分布式的微服务,这时候我们选择远程debug是我们开发的利器。
环境apache-tomcat-8.5.16Linux如何启⽤远程调试tomcat开启远程调试⽅法切换到你的tomcat的bin⽬录/apache-tomcat-8.5.16/bin下,执⾏:./catalina.sh jpda start执⾏上⾯的命令就可以开启远程debug了,如果想配置⼀些信息,⽐如端⼝号什么的,请参考下⾯的说明。
参数说明# JPDA_TRANSPORT (Optional) JPDA transport used when the "jpda start"# command is executed. The default is "dt_socket".## JPDA_ADDRESS (Optional) Java runtime options used when the "jpda start"# command is executed. The default is localhost:8000.## JPDA_SUSPEND (Optional) Java runtime options used when the "jpda start"# command is executed. Specifies whether JVM should suspend# execution immediately after startup. Default is "n".## JPDA_OPTS (Optional) Java runtime options used when the "jpda start"# command is executed. If used, JPDA_TRANSPORT, JPDA_ADDRESS,# and JPDA_SUSPEND are ignored. Thus, all required jpda# options MUST be specified. The default is:## -agentlib:jdwp=transport=$JPDA_TRANSPORT,# address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND操作说明所以如果想修改配置,则如下操作:在catalina.sh中进⾏配置:JPDA_TRANSPORT=dt_socketJPDA_ADDRESS=5005JPAD_SUSPEND=n或者通过JPDA_OPTS进⾏配置:JPDA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'springboot开启远程调试The run goal forks a process for the boot application. It is possible to specify jvm arguments to that forked process. The following configuration suspend the process until a debugger has joined on port 5005<project>...<build>...<plugins>...<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>1.1.12.RELEASE</version><configuration><jvmArguments>-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005</jvmArguments></configuration>...</plugin>...</plugins>...</build>...</project>These arguments can be specified on the command line as well, make sure to wrap that properly, that is:mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"jar 命令开启远程调试在执⾏jar的时候,添加上参数。
使用Eclipse进行Java开发的高级技巧与调试方法Java开发是当今软件开发领域中最为广泛应用的编程语言之一。
而Eclipse作为一款强大的集成开发环境(IDE),不仅提供了丰富的功能和工具,还可以帮助开发人员更高效地进行Java开发。
本文将介绍一些使用Eclipse进行Java开发的高级技巧与调试方法,帮助开发人员更好地利用这个工具进行开发。
一、使用Eclipse的代码自动补全功能Eclipse提供了强大的代码自动补全功能,可以极大地提高开发效率。
在编写代码的过程中,只需输入几个字符,Eclipse就会自动提示可能的代码片段,并在选择后自动补全。
开发人员可以通过按下“Ctrl + 空格”来手动触发代码自动补全功能。
此外,Eclipse还可以根据已有的代码上下文进行智能提示,帮助开发人员更快地找到需要的代码。
二、使用Eclipse的快捷键加速开发熟练掌握Eclipse的快捷键可以大大提高开发效率。
例如,使用“Ctrl + 1”可以快速修复代码中的错误,使用“Ctrl + Shift+ O”可以自动导入缺失的包,使用“Ctrl+ Shift + F”可以自动格式化代码等等。
这些快捷键可以帮助开发人员更快地完成常见的开发任务,减少不必要的鼠标操作,提高开发效率。
三、使用Eclipse的调试功能调试是开发过程中常用的技术手段,可以帮助开发人员找出代码中的错误和问题。
Eclipse提供了强大的调试功能,可以帮助开发人员逐行执行代码,查看变量的值以及调用栈信息等。
在进行调试时,可以设置断点,使程序在特定的位置暂停执行,以便开发人员观察代码的执行情况。
此外,Eclipse还提供了条件断点、表达式求值等高级调试功能,帮助开发人员更好地定位和解决问题。
四、使用Eclipse的代码重构功能代码重构是一种对代码进行结构上的改变,以提高代码质量和可维护性的技术手段。
Eclipse提供了丰富的代码重构功能,可以帮助开发人员快速、安全地进行代码重构。