jvm调试工具_调试JVM

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

jvm调试工具

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

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

相关文章

遮罩窗体弹出登录页面代码实现

先上效果图(本人喜欢胡巴,背景用了胡巴),鼠标滑过页面,图片变暗,透明度为0.4,同时弹出登录窗口。 接下来先看css代码(写的可能不是很规范,根据调整样式顺序写的) body{background-color: black;width: 100%…

【APICloud系列|27】 UICalendar模块(日历)的实现

导读:UICalendar 是一个日历选择模块;可自定义日历的样式,添加特殊日期标注,切换月份,设置指定日期;用于实现常用的日期选择,日历展示功能 模块地址 UICalendar 是一个日历选择模块;可自定义日历的样式,添加特殊日期标注,切换月份,设置指定日期;用于实现常用的日期…

jsp页面页面post传值_在Js页面通过POST传递参数跳转到新页面详解

场景最近在工作中遇到一个需求,有个页面 a.vm,对 ajax 请求的结果进行判断后,获取结果里面的数据传递给一个 URL(b.htm),跳转到新的页面 b.htm。遇到的问题因为一开始是 GET 请求,所以当传递的数据过大的时候&#xff…

使用Camel从WildFly 8向WebLogic 12发送JMS消息

系统集成是一个很好的挑战。 特别是当您在寻找通信标准和可靠的解决方案时。 在当今的微服务世界中,每个人都在谈论REST服务和基于http的协议。 实际上,对于大多数企业项目来说,这往往是远远不够的,而这些项目通常具有更复杂的要求…

【APICloud系列|28】 UIChatBox 模块(聊天输入框)的实现

导读:UIChatBox 模块是一个聊天输入框模块,开发者可自定义该输入框的功能 项目结构: config.xml <?xml version="1.0" encoding="UTF-8"?><widget id="A6909001303255" version="0.0.1"> <name>UIChatbox<…

mysql索引参数_MySQL索引介绍

索引由数据库表中一列或者多列组合而成&#xff0c;其作用是提高对表中数据的查询速度。创建索引是指在某个表的一列或者多列上建立一个索引&#xff0c;用来提高对表的访问速度&#xff0c;创建索引由三种方法&#xff1a;在创建表的时候创建&#xff0c;在已存在的表上创建和…

包装设计模式——

首先建立数据连接成&#xff08;自己建立的&#xff09;/** * 存在必要性&#xff1f; * 数据库连接作为非常重要的资源 &#xff0c;用完了要不要立即销毁&#xff1f;----&#xff08;不能立即关闭&#xff09; * 不能立即关闭&#xff1f;谁维护 * ----…

【APICloud系列|29】dialogBox模块(对话框)的实现

导读:dialogBox 封装了十一种款式的对话框,每一种款式都提供一个接口来调用,开发者可按照各个接口的样式来自定义对话框上的文字、图片、图文等 把 dialogBox 模块的 11 个样式分别实现个简单的效果,其中将 alert 方法做了两个样式,如果你觉得我写的样式够丑,请不要喷我,…

【APICloud系列|30】UILoading 模块demo源码的实现

导读:UILoading 模块封装了两种款式的加载提示框,每一种款式都提供一个接口来调用。开发者可参考各个接口的样式来自定义加载提示框上的图片信息 模块:http://www.apicloud.com/mod_detail/31494 index.html <!doctype html> <html> <head><meta cha…

【APICloud系列|31】百度导航功能的实现

导读:百度导航基础功能。d用到了bMap模块,baiduNavigation模块,UIListView模块。样式完全来自AUI。js用到了zepto.j 效果图: 项目结构: index.html <!doctype html> <html> <head><meta charset="utf-8"><meta name="viewport…

osgi简介_OSGi:简介

osgi简介为基于Java的系统创建的OSGi提供了模块化系统的框架。 OSGi使得可以定义每个单独模块与其他模块的依赖关系&#xff0c;并使用户能够控制生命周期并动态更改系统的每个组件。 OSGi是一个规范&#xff0c;最常见的实现可以算作Equinox &#xff0c; Apache Felix和Knopl…

python合并数组输出重复项_python - 不同数组项的所有可能组合[重复] - 堆栈内存溢出...

您需要笛卡尔积 。>>> arrays [... [[1, 2], [3, 4]],... [[4, 5], [5, 6]],... [[7, 8], [8, 9]],... ]>>> import itertools>>> from pprint import pprint>>> pprint(list(itertools.product(*arrays)))[([1, 2], [4, 5], [7, 8]),([1…

GC基本算法及C++GC机制

前言 垃圾收集器是一种动态存储分配器&#xff0c;它自动释放程序不再需要的已分配的块&#xff0c;这些块也称为垃圾。在程序员看来&#xff0c;垃圾就是不再被引用的对象。自动回收垃圾的过程则称为垃圾收集&#xff08;garbage collection&#xff09;。在一个支持垃圾收集的…

【APICloud系列|32】 aMapNavigation高德地图导航的实现

导读:aMapNavigation 模块封装了高德导航的sdk,支持语音导航功能。用户可自行算路策略类型。开发者只需输入起点终点经纬度即可轻松集成高德导航功能,本模块是由第三方模块开发者提供,使用本模块需在线云编译安装包。 效果图: 项目结构: index.html <!doctype html&…

JDK 9早期版本安装后的Windows注册表清理

在我的上一篇博文中 &#xff0c;我演示了在安装早期版本的JDK 9&#xff08;内部版本68&#xff09;之后围绕Oracle Java符号链接 &#xff08;基于Windows的计算机上的C:\ProgramData\Oracle\Java\javapath\目录&#xff09;的问题的解决方案。这似乎阻止了早期&#xff08;更…

storm mysql druid_Druid 集成

title: Storm Druid 集成 layout: documentation documentation: trueStorm Druid Bolt 和 TridentState该模块提供了将数据写入Druid 数据存储的核心Strom和Trident bolt(螺栓)的实现。 该实现使用Druids的Tranquility库向druid发送消息。一些实施细节从现有的借用 Tranquilit…

C++实现链栈的基本操作

之前对顺序栈写了基本操作&#xff0c;认为有必要也动手练练栈的链表实现。对于链栈&#xff0c;一般不会出现栈满的情况。 链栈头文件定义例如以下&#xff1a; #ifndef CSTOCK_H_ #define CSTOCK_H_typedef int elemType;struct Item {elemType data;Item * p_next; }; class…

java实现网上招标系统

导读:本设计尝试用JSP在网络上架构一个下沙派威客网,以推进网站无纸化,过程电子化,管理智能化的发展。本文从理论和实践两个角度出发,对一个具有数据分析功能的下沙派威客网进行设计与实现分析。论文首先较为详尽地介绍了面向对象分析与设计的有关概念与技术,特别深入介绍…

mysql加上判断_在mysql中where加if判断

在mysql中where中多重条件if判断,项目需求如下: 好友关系中本身具有A,B,C三种角色,好友动态分为1,2,3,4,5种类型。A是必须具有的角色,如果具有A角色可查好友动态类型1,3,4 的信息如果具有B角色可查2类型信息,如果具有C角色可查5类型角色。 实现思想如下:先查出好…

Mongodb 笔记01 MongoDB 简介、MongoDB基础知识、启动和停止MongoDB

MongoDB 简介 1. 易于使用&#xff1a;没有固定的模式&#xff0c;根据需要添加和删除字段更加容易 2. 易于扩展&#xff1a;MongoDB的设计采用横向扩展。面向文档的数据模型使它能很容易的再多台服务器之间进行分割。自动处理跨越集群的数据和负载&#xff0c;自动重新分配文档…