How many times trying to fix a server-side Java problem appeared
trivial, but getting to
the source of the problem took all the time? A remote debugger
attached to a Java application
can shorten the defect-discovery times significantly and make the
process more enjoyable.
The Java Debugger
The Java Debugger (jdb) is a dynamic, controlled, assignment-based
debugging tool.
It helps find and fix bugs in the Java language programs both locally
and on the server.
To use jdb in a J2EE application server you must first launch it with
debugging enabled and
attach to the server from the debugger through a JPDA port (Default
port is 1044).
The default JPDA options for J2EE servers are as follows:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
The jdb parameters specify the way debugger will operate. For
instance
transport=dt_socket
instructs the JVM that the debugger connections
will be made through a socket while the
address=1044
parameter informs it that the port number
will be 1044. Similarly, if you substitute
suspend=y
, the JVM starts in suspended mode
and stays suspended until a debugger is attached to it. This may be
helpful if you want to start
debugging as soon as the JVM starts.
Debugging WebLogic
Debugging WebLogic is no different than debugging any other Java
remote application.
You need to make sure to launch it with the required debugging
arguments and attach a debugger.
In the case of WebLogic 8.1, you need to add these arguments to the
startup script. WebLogic
comes with several launch scripts (*.sh and *.cmd) under
BEA_HOME/weblogic81/server/bin.
- Locate startWSL.cmd and add the following variable DEBUG_OPTS:
set DEBUG_OPTS = -Xdebug -Xrunjdwp:transport= dt_socket,address=1044,server=y,suspend=n
- Next, insert the new variable to the WebLogic startup command, after
"%JAVA_HOME%\bin\java" and preferably before the other options.
- Your startup script should look like:
"%JAVA_HOME%\bin\java" %DEBUG_OPTS% %JAVA_VM% %MEM_ARGS%
%JAVA_OPTIONS%-Dweblogic.Name=%SERVER_NAME%
-Dweblogic.management.username=
%WLS_USER%-Dweblogic.management.password= %WLS_PW%
-Dweblogic.management.server=
%ADMIN_URL%-Dweblogic.ProductionModeEnabled=
%PRODUCTION_MODE%-Djava.security.policy=
"%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
weblogic 10.3 you can set "debugFlag=true" in setDomainEnv.cmd
Debugging JBoss
Same as WebLogic, except that you need to change run.bat/run.sh
located under JBOSS_HOME/bin.
Linux users should see something similar to this:
$ cd /var/jboss4/bin
$ sh ./run.sh
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /var/jboss4
JAVA: /usr/java/j2sdk1.4.2_06/bin/java
JAVA_OPTS: -server -Xms128m -Xmx128m -Dprogram.name=run.sh
DEBUG_OPTS = -Xdebug -Xrunjdwp:transport= dt_socket,address=1044,server=y,suspend=n
CLASSPATH: /var/jboss4/bin/run.jar:/usr/java/j2sdk1.4.2_06/lib/tools.jar
=========================================================================
Debugging Tomcat
Again, very much similar to WebLogic and JBoss, except that you need
to change catalina.bat/catalina.sh
located under TOMCAT_HOME/bin.
Debugger Verification
Now you can launch your application in debug mode. Just to make sure
that the server is
listening to port 1044 you can run netstat /a. You should see port 1044
in the list of open ports
(See Figure 1: List of open ports: netstat -a).
Figure 1 List of open
ports: netstat -a
The Eclipse Connection
After making sure WebLogic is listening for incoming connections on
port 1044, what is left is to tell Eclipse to connect to
this port and you are ready to debug.
- In Eclipse, navigate to
Run | Debug
(See
Figure 2: Create new Remote Java Application configuration in Eclipse
).
- Select
Remote Java Application
, on the left column. Click
New
, on the bottom of the same column.
- In the
Create configuration
screen you'll be prompted to enter some values. Start with a
meaningful name. In my case that's
WebLogic Instance
. For Project, select the Java project that contains the source code
you want to debug. Leave
Connection Type
in default, i.e.
Standard (Socket Attach)
. For
Host
, enter localhost.
If you want to debug a remote server, enter its hostname or IP address.
For port, enter
1044
or the port you defined in your
WebLogic startup script.
- Click
Apply
- Make sure WebLogic instance is running in debug mode. In the same
screen click
Debug
.
Eclipse should automatically take you to the
Debug
perspective and you should see a stack trace in the
Debug
view.
- If you are not automatically taken to the
Debug
perspective, select
Window | Open Perspective | Other
and
then click
Debug.
Figure 2 Create new Remote Java Application configuration in Eclipse
Figure 3
Breakpoint hit in Eclipse debugger
<span http://
Eclipse
Debug window should automatically pop-up with the stack pointer on your
first
breakpoint (See
Figure 3: Breakpoint hit in Eclipse's
debugger
).
After that, you can use all the various functions that the debugger has
to offer, namely variable assignments, step-into, drop to frame, etc.
At this point your environment is enabled for debugging code on your server through Eclipse. Breakpoints, watch variables, you name
it.
Hot deploy is also enabled. If you modify some java code, the
automatic builder should compile the .java file to a .class file. The
remote debugger will see it and use it, all without restarting your
jetty server or its web container. This will not work for things like
adding static variables, new domain classes, or new injectable service
methods that require the application to acknowledge them on startup.
http://www.jacoozi.com/index.php?option=com_content&task=view&id=119&Itemid=134
分享到:
相关推荐
This is the Tenth Edition, of Debugging with GDB: the GNU Source-Level Debugger for GDB (GDB) Version 8.1.90.20180814-git. Copyright © 1988-2018 Free Software Foundation, Inc. Permission is granted...
Debugging With GDB 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
《Debugging with gdb中文带书签特别版》是一本关于GNU源代码级调试器GDB的中文教程书籍,适配gdb版本6.8.50.***。书中详细介绍了GDB的各种功能、命令以及如何使用该工具进行有效的程序调试。 首先,书中提供了一个...
根据提供的信息,我们可以总结并详细解释与“debugging_with_gdb(中文版pdf)”相关的知识点。这份文档似乎是一份关于使用 GDB(GNU Debugger)进行调试的手册或指南的中文版 PDF 文件。GDB 是一个非常强大的开源调试...
Visual Studio 2005 Remote Debugging.mht
Debugging with Fiddler,介绍Fiddler的书籍
GDB还支持远程调试,通过`target remote`命令连接到远程服务器进行调试,这对于分布式系统或嵌入式设备的调试非常有用。 十、调试动态库与多线程 GDB能处理动态链接的库,并允许在多线程环境中调试。使用`shared...
《使用gdb进行调试 第十版》是介绍GNU源码级调试器gdb的官方文档。本书由Richard Stallman、Roland Pesch、Stan Shebs等多位作者撰写,旨在为用户提供一个全面的gdb使用指南,涵盖gdb版本7.5至1.0.53。...
gdb调试工具官方介绍文档 Debugging with gdb The gnu Source-Level Debugger Tenth Edition, for gdb version 10.0.50.20200111-git (GDB) Richard Stallman, Roland Pesch, Stan Shebs, et al.
### 使用Eclipse构建与调试Pentaho 2.0 #### 概述 本文档将详细介绍如何在Eclipse集成开发环境中设置开发环境,包括如何连接到Pentaho Subversion仓库、检出Pentaho项目、构建这些项目以及使用独立的Java应用...
Debugging.with.Fiddler 带书签
Debugging with Fiddler 2012 (英文版 Eric Lawrence 亚马逊5星 热评 畅销书) 网络编程 Web服务开发调试利器 亚马逊11个客户全部评5星,热评畅销书。 Web Services 开发必备。
### 使用GDB进行调试 #### 概述 GDB(GNU调试器)是GNU项目下的一款强大而灵活的源码级调试工具,广泛应用于Linux环境下C/C++等语言编写的程序调试。它允许用户对程序执行过程进行控制,观察变量状态,分析程序...
### 《调试的艺术:使用GDB、DDD及Eclipse》 #### 书籍概述 《调试的艺术:使用GDB、DDD及Eclipse》是一本由Norman Matloff与Peter Jay Salzman合著的专业书籍,旨在帮助程序员掌握高效调试技巧。本书不仅深入介绍...