簡體   English   中英

在Nuix中調試Java應用程序-附加探查器或調試器

[英]Debug Java Application in Nuix - Attach a Profiler or Debugger

我的目標是將Java事件探查器或調試器附加到由Windows應用程序Nuix啟動的Java虛擬機實例。

可以將命令行開關傳遞給Nuix,其中一些傳遞給JVM。

Nuix與JRE 8打包在其子目錄之一中: \\Nuix 7.4\\jre\\ 似乎特定的版本是Java HotSpot™64位服務器VM 1.8.0_92。

我使用以下開關啟動了Nuix:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80

然后,我嘗試在沒有命令行開關的情況下運行jconsole.exe ,但它無法識別Nuix啟動的JVM。 我嘗試使用jdb.exe -attach <Port>創建遠程連接,但是應用程序失敗,出現此異常。

java.io.IOException: shmemBase_attach failed: The system cannot find the file specified

我確認沒有其他東西在端口80上監聽,並且沒有被阻塞。

附加調試器的正確方法是什么?

附帶的問題是,Windows .exe如何使用JAR? 根據Process Explorer,我以前從未見過這種體系結構,也不相信會使用IKVM.NET,也不會使用J#,因為該應用程序不受管理。

要附加調試器,我做了以下工作。 請注意,由於防火牆配置無法更改,我使用了端口80。 我意識到端口8000是常規的Java調試端口。

jconsole.exe

  1. 使用此開關啟動Nuix。

     -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80 
  2. 獲取Windows進程ID nuix_app.exe。

  3. 運行jconsole.exe <PID>

可執行文件

  1. 使用此開關啟動Nuix。

     -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80 
  2. 使用以下開關運行jdb.exe:

     jdb -connect com.sun.jdi.SocketAttach:port=80 
  3. 鍵入run以使Nuix退出掛起模式。

蝕火星

  1. 使用此開關啟動Nuix。

     -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=80 
  2. 轉到運行->調試配置...->遠程Java應用程序。

  3. 配置

     Connection Type = Standard (Socket Attach) Host = localhost Port = 80 
  4. 點擊Debug

  5. 轉到窗口->透視圖->打開透視圖-> Java。

Java任務控制(jmc.exe)

  1. 使用這些開關啟動Nuix

     -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=80 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 
  2. 單擊創建新的自定義JVM連接。

  3. 配置選項

     Host = 127.0.0.1 Port = 80 
  4. 單擊測試連接按鈕。

VisualVM 1.4

  1. 使用這些開關啟動Nuix

     -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=80 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 
  2. 在“應用程序”樹中,右鍵單擊“本地”,然后單擊“添加JMX連接...”。

  3. 將連接設置為localhost:80 ,然后單擊確定。

  4. 在“應用程序”樹中,雙擊“ localhost:80”(pid:[進程ID])


從Windows進程運行JVM

基於JavaAccessBridge-64.dll的存在,我相信Nuix使用Java Access Bridge

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM