调试JVM

在某些(极少数)情况下,您可能会遇到使JVM本身崩溃的情况。 我最近通过将ThreadGroup的名称设置为null来进行管理 。 在这些情况下,调试JVM本身很有用,这样可以更精确地定位崩溃。 这是完成此操作的步骤(它们特定于Linux,因为Windows下没有现成的调试器):
  • 安装gdb(在Ubuntu下,这类似于: sudo apt-get install build-essential
  • 如果您使用的是OpenJDK,请为其安装调试符号,以便调试器可以提供更具可读性的输出(同样,在Ubuntu下,这将是sudo apt-get install openjdk-6-dbg –如果您使用的是6,则用7代替6。最新的OpenJDK)

现在,只需在您的java命令前加上gdb --args

gdb --args java Foo

当出现gdb提示符(“(gdb)”)时,键入“ run”(不带引号)以开始程序的实际运行。 崩溃发生后,您应该显示以下消息:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x6b195b70 (LWP 30273)]
(gdb)
Here you can use the commands “backtrace” and “backtrace full” to get an approximate idea of the crashsite. To continue running (although it will just exit most probably) input “c”. To exit (killing the JVM in the process) type “quit”. Consult the GDB tutorials available on the Internet for more commands and their parameters. 

如果您是从Eclipse内部进行调试,则可以执行以下操作:在配置属性中,将JRE设置为“ Alternate JRE”,并将Java可执行文件指定为“ javag”(此外,请确保已选中“分配控制台”通用标签)。

现在转到您的JDK运行目录(在我的情况下为/ usr / lib / jvm / java-7-openjdk-i386 / bin)并创建一个具有以下内容的javag文件( sudo vim javag ):

#!/bin/bash
gdb -x '/usr/lib/jvm/java-7-openjdk-i386/bin/javag-commands' --args '/usr/lib/jvm/java-7-openjdk-i386/bin/java' $*

还要创建具有以下内容的javag-commands文件

run

最后,使javag可执行( sudo +x chmod javag ),您就可以开始了! 此解决方法是必需的,因为Eclipse在配置选项卡中不接受绝对路径。 第二个文件用于自动将“运行”命令传递给gdb,而无需用户在每次启动时自行键入。 另外,请记住,尽管GDB暂停了该进程,但Java调试器(如Eclipse)无法与之通信,因此它们抛出各种错误(如“目标不响应”)是正常的。
拥有无错误的一年,但是如果您发现错误,请让它们至少具有可复制性 :-)

参考: Transylvania JUG博客上的JCG合作伙伴 Attila-Mihaly Balazs 调试JVM 。

相关文章 :

  • JVM选项:-client vs -server
  • 如何解决生产问题
  • 调试生产服务器– Eclipse和JBoss展示
  • 从CLI监视OpenJDK
  • 您的代码中有几个错误?

翻译自: https://www.javacodegeeks.com/2012/01/debugging-jvm.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/373826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaScript DOM编程常用的方法与属性

DOM是Document Object Model文档对象模型的缩写。根据W3C DOM规范,DOM是一种与浏览器,平台,语言无关的接口,使得你可以访问页面其他的标准组件。 Node接口的特性和方法 特性/方法类型/放回类型说明nodeName String 节点的名字;根…

一:验证微信的Token

前言:申请到微信公众号的同学,可能会挺感兴趣的,毕竟微信公众号,确实是一个好东西,它提供了一个很好的平台,而且它自带有一套管理模板,对于微信公众号可以很好的管理。 但是也仅仅是很好的管理,…

三、 将DataTable 转换为List

1. 方法public static IList<T> ConvertTo<T>(DataTable table) { if (table null) { return null; } List<DataRow> rows new List<DataRow>(); foreach (DataRow row in table.Rows) { rows.Add(row); } return ConvertTo<T>(rows); }2. 调用…

ActiveMQ已准备好黄金时段

ActiveMQ项目始于2005年-在很大程度上&#xff0c;它一直是Apache Software Foundation的顶级项目。 ActiveMQ项目的目的一直是提供世界一流的企业消息传递解决方案&#xff0c;其中经纪人能够提供从支持IP的智能设备一直到企业后端的高可用性的连通性。 ActiveMQ提供跨语言客户…

r语言 adf检验_r语言中如何进行两组独立样本秩和检验

r语言中如何进行两组独立样本秩和检验​tecdat.cn安装所需的包wants <- c("coin") has <- wants %in% rownames(installed.packages()) if(any(!has)) install.packages(wants[!has])>一个样本测试set.seed(123) medH0 <- 30 DV <- sample(0:100, 20,…

MyEclipse 8.5安装Aptana

Aptana简介 Aptana是一个非常强大,开源,专注于JavaScript的Ajax开发IDE它的特性包括&#xff1a; 1、JavaScript,JavaScript函数,HTML,CSS语言的Code Assist功能 2、Outliner(大纲)&#xff1a;显示JavaScript,HTML和CSS的代码结构 3、支持 JavaScript&#xff0c…

2016-1-10 手势解锁demo的实现

一&#xff1a;实现自定义view&#xff0c;在.h,.m文件中代码如下: #import <UIKit/UIKit.h> class ZLLockView; protocol ZLLockViewDelegate <NSObject> - (void)lockView:(ZLLockView *)lockView didSelectedPwd: (NSString *)pwd; end interface ZLLockView : …

php与JAVA的RSA加密互通

Java 版本RSA 进行加密解密 在网上查询了好几天&#xff0c;最终找到解决方案&#xff0c;网络上都是通过Cipher.getInstance("RSA"); 而改成Cipher.getInstance("RSA/ECB/PKCS1Padding");就可以实现与php版本公钥和密钥互通了。 Cipher cipher Cipher.ge…

GWT入门

GWT是Google Web Development Kit的缩写&#xff0c;可让程序员使用Java开发Ajax Web应用程序。 GWT编译器将Java代码转换为JavaScript和html代码。 GWT应用程序称为模块&#xff0c;并且使用xml文件描述模块&#xff0c;假定该模块名称为xml文件的“ mymodule”名称为“ mymod…

JavaScript省市二级联动

XML文件负责保存所需要的数据&#xff0c;而HTML文件负责通过javascript解析XML数据并显示在页面上。代码如下&#xff1a; cities.xml <?xml version"1.0" encoding"GB2312"?> <china><province name"吉林省"><city>…

poj 3579 Median 二分套二分 或 二分加尺取

MedianTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5118 Accepted: 1641Description Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of numbers: ∣Xi - Xj∣ (1 ≤ i &#xff1c; j ≤ N). We can get C(N,2)differenc…

qt 嵌入web页面_Qt嵌入浏览器(三)——QWebEngine与Https

本篇简介&#xff1a;本篇的小目标&#xff1a;挑战通过Qt WebEngine实现与服务端的Https双向认证双向认证&#xff0c;Qt WebEngine和Chromium这里先说结论&#xff1a;挑战失败了。至少使用Qt WebEngine目前已实现的组件没有办法直接实现双向认证。先来简要分析一下实现双向认…

python模块;opencv安装

http://www.lfd.uci.edu/~gohlke/pythonlibs/ 1. 步骤1. 下载Python2.73, 安装, 并配置Python环境变量:".\Program Files\Python27;";注意: OpenCV仅支持2.6&2.7, Python不能使用3.x版本;2. 下载OpenCV2.46, 安装, 并配置OpenCV环境变量:".\Program Files\o…

Java中的正则表达式–软介绍

正则表达式是一种可以应用于文本&#xff08;Java中的String&#xff09;的模式。 Java提供了java.util.regex包&#xff0c;用于与正则表达式进行模式匹配。 Java正则表达式与Perl编程语言非常相似&#xff0c;并且非常易于学习。 正则表达式匹配文本&#xff08;或文本的一部…

AJAX入门——工作原理

理解同步交互和异步交互 举个例子&#xff1a;普通B/S模式(同步) AJAX技术(异步) * 同步&#xff1a; 提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事。 发送方发出数据后&#xff0c;等接收方发回响应以后才发下一个数据包的…

Couldn’t communicate with a helper application.

出现此问题 的情景 我在提交svn之前&#xff0c;在Xcode中的Images.xcassets里添加了文件夹后又删除了&#xff0c; 但是 在Xcode中提交的时候&#xff0c;左侧勾选文件那一栏中 出现了此文件夹及里边的文件。 解决&#xff1a; 我在conerstore中将此文件夹 remove后&#xff0…

python 复制文件夹内容 并结构一致_Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法...

本文实例讲述了Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法。分享给大家供大家参考。具体如下&#xff1a;这个东东本来是做来给公司数据同步用的&#xff1a;新服务器还没正式启用&#xff0c;旧的服务器还在使用&#xff0c;每天都有大量图片传到旧服务器上…

css控制页面文字不能被选中user-select:none;

现象&#xff1a;html中可能有些地方不想让用户复制文字&#xff0c;或是用a标签做了个点击按钮&#xff0c;点快的时候文字会被选中&#xff0c;很丑&#xff0c;这个时候可以使用下面的方案禁止文字选中。原因&#xff1a;鼠标点快了文字会被选中。解决方案&#xff1a;不同的…

form表单标签的enctype属性的作用

Enctype是指定将数据回发到服务器时浏览器使用的编码类型&#xff0c;其编码类型有以下三种 一、 application/x-www-form-urlencoded 这是通过表单发送数据时默认的编码类型。我们没有在from标签中设置enctype属性时默认就是application/x-www-form-urlencoded类型的。…

重温“ Java Sucks”

总览 关于Java的不足之处&#xff08;从C开发人员的角度来看&#xff09;的一个有趣的文档是在一段时间&#xff08;大约2000年前&#xff09;写的&#xff0c;但是今天许多论点都像十年前一样真实&#xff08;或不真实&#xff09;。 原始的Java Sucks发布。 短消息回顾 Ja…