选择显示字体大小

开发一个调试jsp的eclipse插件


  本文通过开发一个jsp 编辑器插件的示例,介绍了 eclipse 中设置 jsp 断点的方法,以及如何远程调试 jsp。作为基础知识,本文的前两部分描述了 java debug 和 jsr-45 的基本原理。

  环境要求: 本文的代码是在 eclipse3.0.0,jdk1.4.2 和 tomcat5.0.5 上测试过的。

  java 调试框架(jpda)简介

  jpda 是一个多层的调试框架,包括 jvmdi、jdwp、jdi 三个层次。java 虚拟机提供了 jpda 的实现。其开发工具作为调试客户端,可以方便的与虚拟机通讯,进行调试。eclipse 正是利用 jpda 调试 java 应用,事实上,所有 java 开发工具都是这样做的。sun jdk 还带了一个比较简单的调试工具以及示例。

  下图为 jpda 的基本架构:

components debugger interface / ----------------------- /  vm  debuggee ----( ----------------------- <------- jvmdi - java vm debug interface \  back-end  \ ----------------------- /  comm channel -(  <--------------- jdwp - java debug wire protocol \  ---------------------  front-end  --------------------- <------- jdi - java debug interface  ui  --------------------- 

  参见:http://java.sun.com/j2se/1.4.2/docs/guide/jpda/architecture.html

  eclipse作为一个基于 java 的调试客户端,利用 org.eclipse.jdt.debug plugin 提供了jdi 的具体实现。jdi 接口主要包含下面 4 个包
com.sun.jdi com.sun.jdi.connect com.sun.jdi.event com.sun.jdi.request 
  本文不对 jdi 进行深入阐述,这里重点介绍 jdi 中与断点相关的接口。
  jsr-45规范

  jsr-45(debugging support for other languages)为那些非 java 语言写成,却需要编译成 java 代码,运行在 jvm 中的程序,提供了一个进行调试的标准机制。也许字面的意思有点不好理解,什么算是非 java 语言呢?其实 jsp 就是一个再好不过的例子,jsr-45 的样例就是一个 jsp

  jsp的调试一直依赖于具体应用服务器的实现,没有一个统一的模式jsr-45 针对这种情况,提供了一个标准的模式。我们知道,java 的调试中,主要根据行号作为标志,进行定位。但是 jsp 被编译为 java 代码之后,java 行号与 jsp 行号无法一一对应,怎样解决呢?

  jsr-45 是这样规定的:jsp 被编译成 java 代码时,同时生成一份 jsp 文件名和行号与 java 行号之间的对应表(smap)。jvm 在接受到调试客户端请求后,可以根据这个对应表(smap),从 jsp 的行号转换到 java 代码的行号;jvm 发出事件通知前, 也根据对应表(smap)进行转化,直接将 jsp 的文件名和行号通知调试客户端。

  我们用 tomcat 5.0 做个测试,有两个 jsp,hello.jsp 和 greeting.jsp,前者 include 后者。tomcat会将他们编译成 java 代码(hello_jsp.java),java class(hello_jsp.class) 以及 jsp 文件名/行号和 java 行号之间的对应表(smap)。

  hello.jsp:

1 
2 
3 4 5 6 7 8


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons