2008-12-05 127 views

回答

12

当你开始在调试模式下的服务器,它监听指定的TCP端口上。 Eclipse连接到该端口,并使用Java调试有线协议(JDWP)进行交谈。在此处阅读详细信息: http://java.sun.com/j2se/1.5.0/docs/guide/jpda/

5

我认为它被称为JDWP(Java调试线协议) - 更多here

0

Eclipse调试从所谓的代理开始。

运行complies .class源代码的JVM具有允许将外部库(用Java或C++编写)注入到JVM中的功能,仅仅是运行时。这些外部库被称为代理,并且它们能够修改已运行的.class文件的内容。这些代理可以访问JVM的功能,这些功能无法从JVM中运行的常规Java代码中访问,并且可以用来执行有趣的内容,如注入和修改运行源代码,分析等.JRebel等工具利用这块功能实现了他们的魔力。

并通过代理库到JVM,您通过启动参数做到这一点,使用

agentlib:libname[=options] format. 

我们实际上通过一个代理库命名JDWP到JVM运行Tomcat。 jdwp是用于定义调试器和正在运行的JVM之间通信的JDWP(Java调试线协议)的特定于JVM的可选实现。它的实现,如果存在提供作为JVM的本地库作为jdwp.so或jdwp.dll

那么它是做什么的? 简而言之,我们传递的jdwp代理基本上提供了作为运行应用程序的JVM实例和调试器(可以位于远程或本地)之间的链接的功能。由于它是一个代理程序库,它具有拦截正在运行的代码,在JVM和调试程序之间创建桥梁的能力,并且具有在JVM上应用调试程序的功能。 由于在JVM体系结构中,调试功能在JVM本身中没有找到,但是被抽象为外部工具(通常被称为调试器),这些工具可以驻留在运行被调试的JVM的本地机器上,或者从外部机器运行。正是这种分离的模块化架构使我们能够在远程计算机上运行JVM并使用JDWP,让远程调试器能够与其通信。

这就是Eclipse调试器如何工作的简称。

相关问题