`
lujar
  • 浏览: 514719 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

CowNew开源-远程调试、wait异常及其他

阅读更多

CowNew开源团队网站 http://www.cownew.com
论坛 http://www.cownew.com/newpeng/
转载请注明此版权信息

今天做的事情比较杂,所以感想也比较杂:
1、java程序的远程调试。
“JPDA是sun jdk自带的远程调试机制。它提供了一套标准的调试接口,可以从虚拟机一级允许外界用特定协议探测虚拟机内部的运作细节。只要你装了jdk 1.2以上的sun jdk,就已经有了jpda支持。 只要是用标准JDK中java.exe运行的应用,就可以用jpda进行远程调试。以web应用的开发为例,servlet和ejb的调试一直不是一件太容易的事情。虽然jbuilder、eclipse等有一些常见的应用服务器,如tomcat, weblogic 6.x,的调试插件,但是用法各不相同,而且很容易由于版本问题导致出现各种问题,而且对于有的服务器则没有相应的IDE插件。
JPDA就不一样。由于它是java平台的标准功能之一,所以我们其实可以调试任何用jdk运行的程序。只需要做两件事:
(1)、 在被调试的应用上,增加几个java虚拟机启动参数,让它启动后进入调试服务器模式;
(2) 在本机或网络中另一台机器上用某种jpda客户端程序,attach到被调试的应用程序(可以通过socket或共享内存两种方式)。jpda本身只是一个接口,调试工具的好用与否就要看其对jpda的应用如何。jdb是sun jdk自带的命令行jpda调试客户程序,你可以用命令行设置断点,查看变量值,等等。但不是很直观。而jbuilder、eclipse的jpda调试器就做到了将jpda图形化,可以直观的设置断点,跟踪程序,查看量值,等等。 ”---本段改编自“http://www.cjsdn.com/post/print?bid=7&id=1376”

以elipse+tomcat为例:
(1)打开Tomcat 5.0\bin下的catalina.bat,在“set JPDA= ”下加入如下两行:
set JPDA_TRANSPORT=dt_socket
set JPDA_ADDRESS=8787
(2)启动tomcat
(3)在eclipse的debug中新建一个“Remote Java Application”,工程选择被调试的远程程序的源码工程,host填127.0.0.1,port为8787
(4)运行调试。
这样我们就可以在eclipse中下断点调试tomcat中运行的程序了。让那些乱七八糟的插件哪凉快去哪呆着吧。
注意一定要保证eclipse工程中的源码和tomcat中运行的程序一致。

2、调用对象的wait方法的时候有可能会抛出InterruptedException异常,以前我是把这个异常再次抛出,今天运行发现当这个异常抛出的时候,线程就死掉了。因此不能简单的将此异常re-throw,必须处理它,比如JDBMonitor中的BlockedChannel的take方法就要如下改写:
public synchronized Object take()
 {
  if (container.isEmpty())
  {
   try
   {
    wait();
   } catch (InterruptedException e)
   {
    return null;
   }
  }
  Object obj = container.pop();
  return obj;
 }

3、windows下运行linux的最好的工具
最近一直想验证JDBMonitor在linux底下是否有bug,但是听人说过,linux安装不当很容易发生数据丢失,因此一直不敢装。而用virtual PC,VMWare之类的软件又太消耗内存,而且需要虚拟机安装完成再安装linux。今天无意中搜索到一个windows下的linux虚拟机:MetroPipe VPM 。
下载地址:
http://www.metropipe.net/ProductsPVPMDownload.shtml
解压后直接运行其中的qemu-win.bat就能启动Linux。不用安装,启动关闭都非常快,而且占用内存相对来说比较小。
唯一一个缺点就是默认就进入图形模式,抽时间看看怎么配置让它启动以后进入字符模式。
详细可以参考:http://www.highand.com/viewthread.php?tid=545

 
分享到:
评论

相关推荐

    《java学习宝典》

    CowNew 技术杂志

    使用jbmonitor来监听sql

    jbmonitor是一款开源的数据库监控工具,它专为Java应用程序设计,特别是针对B/S架构的产品。这个插件非侵入式地监听SQL语句,这意味着它可以在不改变原有代码的情况下工作,因此不会对应用程序的性能产生显著影响。...

    控件开发基础.rar

    Delphi控件开发 1~8 由CowNew开源团队撰写。 文章将通过一个简单的例子来为初学者介绍编写控件的一些基本方法和模式。  这个例子控件叫TLeiLabel,是在TLabel的基础上增加两个实用的功能:一是使文字具有立体...

    10分钟掌握C#

    #### 一、枚举定义及操作 **枚举定义** 是 C# 中一种非常实用的数据类型,用于定义一组命名的常量。通过枚举,开发者可以更加清晰地表达代码意图,并提高代码的可读性和可维护性。 ##### 示例: ```csharp enum ...

    IronPython开发工具

    2. **调试工具**:内置调试器,支持断点设置、单步执行、查看变量值等功能,便于调试代码。 3. **项目管理**:帮助组织和管理IronPython项目,包括源代码、资源文件等。 4. **集成环境**:与.NET Framework紧密集成...

    替代IIS的嵌入式.net Web服务器

    本主题将探讨一种替代IIS的嵌入式.NET Web服务器,它是从Visual Studio 2008中提取出来的,适用于快速本地开发和调试。 嵌入式Web服务器的主要优点在于其轻量级和易用性。它们可以直接与你的.NET项目集成,无需独立...

    批处理最完整人性化教程

    - 使用`set`命令调试变量。 - 分步执行脚本以定位问题所在。 #### 结论 批处理脚本作为一种简单但功能强大的自动化工具,在日常工作中有着广泛的应用场景。通过合理的命令组合和逻辑控制,可以轻松实现复杂任务的...

    一个.net WF的纯Web工作流设计器,能生成xoml

    综上所述,这款.NET WF的纯Web工作流设计器提供了一种高效、便捷的方法来创建和管理工作流,对于需要在线协作和远程开发的团队来说,这是一个非常实用的工具。通过深入理解和使用这个设计器,开发者能够更好地利用...

    微软移动开发技术资料(1)

    9. **API集成**:移动应用常常需要与后端服务器交互,开发者需要了解如何使用HttpClient或其他网络库进行API调用,以及如何处理JSON或XML数据。 10. **安全性**:移动应用的安全性是不可忽视的,开发者需要掌握身份...

    eclipse插件开发常用技巧

    例如,可以获取当前工程的IPackageFragmentRoot,然后创建新的包名(如"com.cownew"),接着使用createCompilationUnit()方法创建名为"Hello.java"的源文件,指定包名和源代码内容。 此外,Eclipse插件开发中还经常...

    传智播客.Net培训WP7(windows phone7)模拟器20110417版

    5)开发调试方便,能够把本机磁盘映射为手机的媒体库。 6)模拟外设丰富,收音机用网络收音机模拟、用3D旋转模拟手机旋转、用地图选取模拟手机位置变化、振动器模拟器、加速度模拟器、用电脑摄像头模拟手机摄像头...

    linux 下ESC键的延时问题

    #### 一、问题背景及原因分析 在Linux环境下,特别是字符终端中,用户可能会遇到ESC键操作时出现的延时问题。按照原设计,按下ESC键应立即触发特定操作(如弹出菜单),但实际上用户可能需要等待1到2秒才能看到预期...

    使用Struts2实现的销售单CRUD

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中,尤其在处理业务逻辑和展示层交互时表现出色。在这个"使用Struts2实现的销售单CRUD"项目中,我们将深入探讨如何利用Struts2进行...

    支持C语言编写CGI的服务器TinyWeb web server

    **CGI(Common Gateway Interface)** 是一种标准的接口,允许Web服务器与外部程序交互,以便处理动态网页请求。在本场景中,`TinyWeb web server` 是一个轻量级的Web服务器,它特别之处在于它支持用C语言编写CGI...

    access查看器

    Access查看器是一款专门设计用于打开和查看Access数据库文件(通常扩展名为.mdb)的应用程序。在Microsoft Office套件中,Access是用于创建和管理数据库的强大工具,但有时用户可能只需要查看数据库内容,而无需编辑...

    《专家手记AJAX开发实战 》电子版

    在AJAX领域已经有一些非常好的图书出版,不过这些图书大都是用PHP、.Net等语言描述的,以Java实现的并不是很多,即使有也是浅尝辄止。不过《专家手记AJAX开发实战 》的出现改变了这一面貌。 这本书不仅用了大量...

    步步高学习机源码

    【步步高学习机源码】是一份珍贵的历史资料,它揭示了早期电子教育设备的核心运行机制。这份源码是步步高学习机的操作系统基础,它包括了关键的系统组件,如BIOS(基本输入输出系统)、模拟器以及命令处理模块等。...

Global site tag (gtag.js) - Google Analytics