2012-05-09 43 views
5

我試圖將我的最佳調試器連接到遠程Glassfish實例(通過遠程我指的不是在同一臺物理機器上運行,而不是在同一臺虛擬機上運行)。無法使用任何調試器連接到Glassfish

我的GlassFish域配置具有「調試」標誌檢查,並server.log的報告啓動

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

這表明(在我看來)期間,調試確實有效。

但是,當我嘗試連接調試器時,它失敗。以下會話是一個示例(使用PuTTy完成):

$ jdb -connect com.sun.jdi.SocketAttach:port=9009 
java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385) 
    at java.net.Socket.connect(Socket.java:529) 
    at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:204) 
    at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98) 
    at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:72) 
    at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358) 
    at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168) 
    at com.sun.tools.example.debug.tty.Env.init(Env.java:64) 
    at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010) 

Fatal error: 
Unable to attach to target VM. 

什麼可能導致該行爲?

編輯

聲明本JDB命令行被賦予了作爲example of Glassfish debug testing on the web,這是爲什麼我用它

還要注意,我在本地做這個JDB調試會話(這時候說使用PuTTy連接到該機器,因此在Glassifh機器上運行時調用jdb)。

+1

你可以運行'ps -ef | grep java'作爲快速的完整性檢查,glassfish以您的jvm參數開頭。也是該端口狀態的netstat? – nsfyn55

+1

當你說'通過運行我的意思是沒有運行'你的意思是'通過REMOTE我的意思是不運行'? – vkraemer

+0

@vkraemer的確。我相應地改變了這個問題。 – Riduidel

回答

0

由於您位於同一臺計算機上,因此請嘗試使用jdb -attach 9009

如果這樣不起作用,請查看jdb documentation,因爲它使用非常不同的 選項來準備VM進行調試。

0

如果要調試的JVM位於遠程計算機(具有不同IP地址的計算機)上,則必須將主機名或IP地址包含爲附加選項的一部分。

jdb -attach <hostname-or-address>:<port-number> 

jdb很聰明,但它不會搜索您的網絡只是爲了找到一個等待JPDA客戶端的端口。

你可能想看看document about jdb

相關問題