調試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.pswp.cn/news/373826.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373826.shtml
英文地址,請注明出處:http://en.pswp.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…