文档章节

远程调试运行在Resin上面的Web应用程序

古城痴人
 古城痴人
发布于 2014/03/27 19:53
字数 775
阅读 520
收藏 2

有时候,我们不得不放弃在本地调试我们的程序,把我们的程序先布署到服务器,然后把调试信息都记在日志中,用眼睛瞅日志来调试程序。

不是用这种方式不行,只是效率太低,本来写程序是一件开心的事情,却变得令人心烦。

其实,Java本身支持远程调试,只要增加一些JVM的启动参数,就可以远程调试了,JVM启动参数就像下面的样子:

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

下面是参数的说明:

-XDebug               启用调试。
-Xnoagent             禁用默认sun.tools.debug调试器。
-Djava.compiler=NONE  禁止 JIT 编译器的加载。
-Xrunjdwp             加载JDWP的JPDA参考执行实例。
transport             用于在调试程序和 VM 使用的进程之间通讯。
dt_socket             套接字传输。
dt_shmem              共享内存传输,仅限于 Windows。
server=y/n            VM 是否需要作为调试服务器执行。
address=9988          调试服务器的端口号,客户端用来连接服务器的端口号。
suspend=y/n           是否在调试客户端建立连接之后启动 VM 。

写出来的样子大概是这样的:

java  -Xdebug -Xnoagent -Djava.compiler=NONE 
-Xrunjdwp:transport=dt_socket,server=y,address=9988,suspend=n test.package.Main


配置远程服务器

如果我们想要调试一个Web应用程序,那么在启动Web服务器时需要增加上面的JVM参数。

由于最近我在使用Resin,所以就以Resin 4.0作为例子来说明一下(主要原因是网上说的都不管用)。

  • 环境:CentOS 6.3

  • 应用服务器:Resin4.0

  • JDK版本:JDK6

# 进入Resin的配置文件目录
# cd /usr/local/resin/conf
# ll
total 80
-rw-r--r-- 1 root root 12620 Oct 24 22:42 app-default.xml
-rw-r--r-- 1 root root 6447 Oct 24 22:42 cluster-default.xml
-rw-r--r-- 1 root root 21594 Oct 24 22:42 health.xml
drwxr-xr-x 2 root root 4096 Oct 24 22:42 keys
drwxr-xr-x 2 root root 4096 Oct 24 22:42 licenses
-rw-r--r-- 1 root root 5119 Oct 24 22:42 resin.properties
-rw-r--r-- 1 root root 12404 Mar 27 18:08 resin.xml


Resin启动时的JVM参数在resin.xml里面配置。

# vim resin.xml

<cluster id="app-youyuan">
    <root-directory>.</root-directory>
    <server-default>
      <http address="*" port="8080" />
        <jvm-arg>-Xms1024m</jvm-arg>
        ... ... ...
        <jvm-arg>-Xdebug</jvm-arg>
        <jvm-arg>-Xrunjdwp:transport=dt_socket,address=9988,server=y,suspend=n</jvm-arg>
    </server-default>
  </cluster>


cluster -> server-default 结点里面设置JVM参数。

设置完成后重启resin:

/usr/local/resin/bin/resin.sh restart -server youyuan

启动完后,检查端口:

 # netstat -apn | grep 9988
tcp 0 0 你机器的IP:9988 这里是IP:51840 ESTABLISHED 30130/java

可以看到,已经正常启动了。剩下的就是在本地连到服务器上进行调试了。


本地使用Eclipse连接服务器进行远程调试

  • Eclipse版本:4.3

1. 右击要调试项目,在弹出的菜单中点击 Debug AS -> Debug Configurations...

    如图所示,右击Remote Java Application,新建一项,


在Project中选中要远程调试的项目,在Connection Type中选择Socket Attach,在Connection Propertyies中设置远程调试的应用的IP地址及端口。

然后点击Apply,Debug就可以连接了。





© 著作权归作者所有

古城痴人
粉丝 16
博文 16
码字总数 19276
作品 0
朝阳
高级程序员
私信 提问
加载中

评论(1)

Y
YY0310
不错,很实用!13
maven配置resin和debug模式

右键maven项目,在Java Build Path选项的Source选项,选中Output folder 点击Edit按钮,改变maven原来的java文件编译目录,按ok就可以了。 原来的maven的java文件编译后会保存在target目录下...

张升强
2013/11/18
216
0
Resin远程信息泄露漏洞

受影响系统:   Caucho Technology Resin v3.1.0 for Windows   Caucho Technology Resin v3.0.21 for Windows   Caucho Technology Resin v3.0.20 for Windows   Caucho Technology......

cnbird
2013/04/24
0
0
使用Eclipse进行远程调试

今天决定做件有意义的事,写篇图文并茂的blog,为什么要图文并茂?因为很多事可能用语言也说不明白,从以前我发表的一篇文章可以看得出来,http://blog.csdn.net/sunyujia/archive/2008/03/2...

明舞
2015/06/02
70
0
远程调试 Azure Web App

当我们将 Web App 部署在 Azure 上时,如果能够实现远程调试,将会极大的提高我们修复 bug 的效率。Visual Studio 一贯以功能强大、易用著称,当然可以实现基于 Azure 应用的创建、发布和调试...

葡萄城控件技术团队
2016/08/09
37
0
在同一台机器上运行多个Resin实例

本文特指 Resin 3.1.x 版本,这个版本跟以前的有很大的不同,特别是在配置上。 昨晚经过一番苦思量以及认真阅读Resin的官方文档,通过实践终于在同一台电脑上运行了两个Resin实例,多于两个R...

红薯
2009/03/05
2.1K
2

没有更多内容

加载失败,请刷新页面

加载更多

DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
22分钟前
3
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
8
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
7
0
作为一个(IT)程序员!聊天没有话题?试试这十二种技巧

首先呢?我是一名程序员,经常性和同事没话题。 因为每天都会有自己的任务要做,程序员对于其他行业来说;是相对来说比较忙的。你会经常看到程序员在发呆、调试密密麻麻代码、红色报错发呆;...

小英子wep
今天
31
0
【SpringBoot】产生背景及简介

一、SpringBoot介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程,该框架使用了特定的方式来进行配置,从而使开发人员不再需要...

zw965
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部