java jar 遠(yuǎn)程開關(guān)調(diào)試參數(shù)

詳情:nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=0928,server=y,suspend=y -Xms4096m -Xmx4096m -classpath /mvtech/work/isms.jar com.mvtech.app.main.StartServer 2>error.log&

1、在遠(yuǎn)程機(jī)上運(yùn)行程序

在遠(yuǎn)程主機(jī)(該例中使用的是一個(gè)Solaris機(jī)器)的適當(dāng)位置創(chuàng)建一個(gè)文件夾,這里在用戶目錄下創(chuàng)建了temp目錄及子目錄helloantworld,將你在本地編譯生成的lib目錄(其中包括兩個(gè)jar文件:HelloAntWorld.jar,ojdbc6.jar)通過ftp目錄傳至新建的~/temp/helloantworld下。

有~/temp/helloantworld下新建shell腳本文件exec.sh,包含以下內(nèi)容:

#!/bin/sh

echo start to run HelloAntWorld

java -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=y -jar lib/HelloAntWorld.jar

關(guān)于這個(gè)exec.sh文件,≈Windows上的batch文件。第一個(gè)應(yīng)該是注釋,第二行的echo即回顯命令,可以打印一行話。第三行是重點(diǎn),我們知道如果僅僅是執(zhí)行這個(gè)HelloAntWorld.jar,可以寫成:java -jar lib/HelloAntWorld.jar

而中間這些參數(shù)正是為了Remote debug而設(shè):

-XDebug啟用調(diào)試

-Xrunjdwp加載JDWP的JPDA參考執(zhí)行實(shí)例。

transport用于在調(diào)試程序和VM使用的進(jìn)程之間通訊。

dt_socket套接字傳輸。

server=y/n???????????????????????????? VM是否需要作為調(diào)試服務(wù)器執(zhí)行。

address=9527調(diào)試服務(wù)器監(jiān)聽的端口號。

suspend=y/n是否在調(diào)試客戶端建立連接之后啟動VM。

關(guān)于suspend多說一句,如果設(shè)置為y,它會阻塞程序運(yùn)行,直到有客戶端連接到對應(yīng)的監(jiān)聽端口(這里是9527),程序才真正開始執(zhí)行。我們有時(shí)候會抱怨程序一閃而過,還沒來得及在本地加載上代碼程序就執(zhí)行完了,這種情況就可以使用suspend參數(shù)。

還有一個(gè)細(xì)節(jié)是-jar參數(shù)不能寫到-Xdebug參數(shù)前,像這樣無法啟用調(diào)試:

java -jar lib/HelloAntWorld.jar -Xdebug -Xrunjdwp:transport=dt_socket,address=9527,server=y,suspend=y

2.開始調(diào)試

在~/temp/helloantworld目錄下執(zhí)行exec.sh,可以看到輸出,

start to run HelloAntWorld

Listening for transport dt_socket at address: 9527

在本地的eclipse里,預(yù)先在代碼里打上斷點(diǎn),然后debug/debug configurations/Remote Java Application,在Host中輸入遠(yuǎn)程主機(jī)的IP,在Port中輸入遠(yuǎn)程主機(jī)的監(jiān)聽端口,這里是9527,然后點(diǎn)Debug,如果不出意外代碼將走到斷點(diǎn)。

如果代碼未走到斷點(diǎn)處并且提示“缺乏行號信息,無法設(shè)置斷點(diǎn)”(Unable to install breakpoint in … due to missing line number attributes. Modify compiler options to generate line number attributes),請檢查以下設(shè)置:

1)eclipse Window/Preferences/Java/Compiler/Classfile Generation: "add line number attributes to generated class file"是否已選中。

2)如果已經(jīng)選中,檢查你使用的Ant build.xml文件,對javac是否已經(jīng)設(shè)置了參數(shù)debug=”true”。

實(shí)例:

#!/bin/sh

echo created by meter @copyright 2017

ps -ef|grep /mvtech/work/isms.jar|grep StartServer|awk '{print $2}'|xargs kill -9

a=$?

b=0

if [ $a == $b ]

then

echo stop isms.jar success

rm -rf /mvtech/work/error.log

echo error.log removed.

rm -rf /mvtech/work/nohup.out

echo nohup.out removed

rm -rf /mvtech/work/ismslog/*

echo ismslog.txt removed.

echo log files was removed.

else

echo stop error.Mayby isms.jar is not running

fi

sleep 3s

echo start now:

echo java running in debug....

nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=0928,server=y,suspend=y -Xms4096m -Xmx4096m -classpath /mvtech/work/isms.jar com.mvtech.app.main.StartServer 2>error.log&

echo listining port 0928

echo started .

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容