2008-09-17 40 views

回答

4

我剛剛昨天第一次使用jdb,對結果非常滿意。你看,我在我的筆記本電腦上用Eclipse進行編程,然後部署到虛擬機上,以確保整個shebang仍然可用。非常偶然的情況下,我必須研究一些獨立執行的東西,作爲命令行。這些東西有時需要調試。

這一直是一個問題,因爲我不想在VM上安裝Eclipse的麻煩(它已經夠慢了!),但我不知道一個簡單的方法來獲得它在完成運行之前連接到我的命令行運行類。

jdb來救援!它的作用很小 - 功能很小,幾乎到了裸露的地步......這會迫使你更多地運用你的頭腦,而不是使用這個工具(就像我說的here)。

確保打印出參考文獻(solaris,windows,java 1.5 - 我認爲它們都差不多),並在第二個屏幕上打開並瀏覽您的源代碼。我希望你有第二個屏幕,否則你會很多。

+0

正如在其他答案中通過codingME所述,您可以使用JPDA(http://docs.oracle.com/javase/1.5。 0/docs/guide/jpda/conninv.html)命令行切換,使您的Java VM偵聽調試器連接。嘗試suspend = y暫停執行,直到調試器連接,避免在調試器連接之前完成程序的問題。通過指定合適的端口號以及防火牆配置或SSH隧道設置,您可以通過網絡連接到遠程VM。例如:-agentlib:jdwp = transport = dt_socket,server = y,address = 5005,suspend = y – Neek 2012-07-24 07:14:24

-1

我更喜歡在eclipse中使用遠程調試工具。

-3

JDB難以置信地難以使用。放置System.outs或使用IDE調試器將產生更好的結果。對於更有趣的功能(例如跟蹤線程,堆大小等),您可以使用JConsole工具以圖形方式獲取信息。

+0

加多寶是那麼容易,因爲任何調試器來使用,這種反饋是非生產性。 此外,JConsole不允許您觀察變量,設置斷點,中斷例外等。 – 2014-06-11 00:16:53

2

假設你的程序是由以下命令開始:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<port> <class> 

您可以通過JDB附加到這個過程:

jdb -attach <port>