java中的远程debug调试
java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y
参数 含义
Xdebug 告诉jvm运行在debug模式下
Xnoagent 不清楚
Xrunjdwp transport 指定连接方式(包括socket传输和内存传输两种,其中内存传输只支持windows,而且内存传输不支持远程调试)
address 监听端口,以接收debug客户端发起的TCP连接。
server =y 表示在remote debugging会话中作为服务端
suspend =y 表示在客户端建立连接前,服务端被挂起;=n 则不会被挂起。 专门调试时建议设置成y
客户端设置
(1) 打开eclipse工作台 (笔者用的是eclipse3.2)
(2) 选择“Run->Debug…”菜单项
(3) 选择“Remote Java Application”,在右键弹出菜单中选择“New”
(4) 在Connect标签项中配置连接方式,远程主机的IP和端口(由于在服务端我们设置的是8787,客户端则设置8787)
(5) 在Source标签项中配置好源代码,一般保留默认的就可以。
调试
(1) 在服务端(笔者实验是在10.10.41.182上)运行脚本ex.sh,会显示程序正监听8787端口,由于suspend设置成了=y,所以必须等到客户端连接上了服务端才会继续运行。
(2) 运行客户端,运行刚才建立的RemoteDebugger(1),注意到远程调试项图标下面有个“L”型的折线图标。
在debug Perspective模式下就可以看到阻塞于断点的jvm了
例如Java HotSpot(TM) 64-Bit Server VM[datanode-2:8088]
Thread [main] (Suspended (breakpoint at line 282 in DataNode))
DataNode.startDataNode(Configuration, AbstractList<File>) line: 282
DataNode.<init>(Configuration, AbstractList<File>) line: 232
DataNode.makeInstance(String[], Configuration) line: 1363
DataNode.instantiateDataNode(String[], Configuration) line: 1318
DataNode.createDataNode(String[], Configuration) line: 1326
DataNode.main(String[]) line: 1448
2011.12.08
1. tomcat debug
/usr/java/default/bin/java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8082 -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
2011.12.13
1. /usr/java/default/bin/jstat -gcutil pid 500 100
2. strace jps
3. /usr/java/default/bin/jstack -F 9107(pid) 堆栈信息
2012.05.17
1. Eclipse 中打断点, debug时, 提示 "Unable to install breakpoint due to missing line number attributes. Modify compiler options to generate line number attributes" 是因为被debug的jar包,没有行信息, 要在javac里加 debug="true" 参数重新编译jar文件, 再debug就可以了.
分享到:
相关推荐
Java远程debug调试视频教程+文档+源码 结合IDEA工具 jar包 war包方式
远程debug 一、remote debug 何为远程debug呢?通常我们在开发过程中,都会将代码部署到服务中,这个时候QA 提出了一个bug,通过查看代码的逻辑发现问题十分的困难?一般情况下都是想着本地能不能复现一下,本地debug...
远程debug调试Java,直接替换到apache-tomcat-7.0.78/bin/下的startup.sh
NULL 博文链接:https://dacoolbaby.iteye.com/blog/2070292
主要介绍了IntelliJ IDEA远程Debug Linux的Java程序,找问题不要只会看日志了,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
针对springboot jar方式启动的远程调试, 不用本地启动调试,直接服务器调试
自己写的介绍java远程调试的ppt。有jvm的调试模型,eclipse的调试技巧,远程调试介绍,环境搭建。并有一个demo演示截图。
Debug时修改代码能即时生效的说明,帮助大家在debug时解决无法及时生效的问题
JAVAECLIPSE下配置WINDCHILL远程调试WINDCHILL学习笔记.pdf
JavaEclipse远程调试,在实际环境进行调试,可以定位到许多莫名其妙的环境问题。
myeclipse远程调试(java project)附说明文档
DebugView帮助文档 DebugView使用说明 DebugView介绍DebugView帮助文档 DebugView使用说明 DebugView介绍DebugView帮助文档 DebugView使用说明 DebugView介绍DebugView帮助文档 DebugView使用说明 DebugView介绍
NULL 博文链接:https://love1234sky.iteye.com/blog/2274302
远程调试快捷键
Eclipse 调试器; Debug 视图;调试 Java 语言程序;远程调试;Eclipse快捷键调试
Jsch远程操作linux命令Demo: Jsch远程操作linux命令Demo :Exec2.java 通过jsch 实现远程执行Linux命令(命令参数支持中文); Shell.java 实现与Linux交互对话通讯(支持中文)。
在测试过程中如果出现程序bug问题,但又不知道什么原因时,我们可以考虑使用eclipse的远程debug调试功能,这样我们就可以在本地跟踪实际代码,来一步一步的追踪出现问题的地方。
eclipse 远程调试jboss as7配置过程, 图文并茂
该项目是构建工具SBT的插件。... 它将提供用于连接远程调试器的代理服务器。 此代理服务器将隐藏基础Java进程的重新启动,因此您不必在每次重新启动后都重新连接调试器。 这仍处于实验阶段,无法完全发挥作用。
gdb调试器源代码编译 调试的基本原理 远程调试 再谈”借壳” 一些调试技巧 调试前景展望