Java安全之jar包調(diào)試技巧
點擊上方藍色字體,選擇“標星公眾號”
優(yōu)質(zhì)文章,第一時間送達
? 作者?|? nice_0e3
來源 |? urlify.cn/QJreAr
調(diào)試程序
首先還是創(chuàng)建一個工程,將jar包導入進來
調(diào)試模式的參數(shù)
啟動中需要加入特定參數(shù)才能使用debug模式,并且需要開放調(diào)試端口
JDK5-8:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
JDK9+:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
suspend=n表示的是啟動Java應(yīng)用時是否立即進入調(diào)試模式,suspend=y表示啟動即暫停,suspend=n則表示啟動時不需要暫停。address=*:5005表示的是Debug監(jiān)聽的服務(wù)地址和端口,根據(jù)需求修改,上述配置會監(jiān)聽到0.0.0.0。
參數(shù)說明
(1) transport
指定運行的被調(diào)試應(yīng)用和調(diào)試者之間的通信協(xié)議,它由幾個可選值:
dt_socket:主要的方式,采用 socket 方式連接
dt_shmem:采用共享內(nèi)存方式連接,僅支持 Windows 平臺(暫未驗證)
(2) server
當前應(yīng)用作為調(diào)試服務(wù)端還是客戶端,默認為 n。
如果你想將當前應(yīng)用作為被調(diào)試應(yīng)用,設(shè)置該值為 y;如果你想將當前應(yīng)用作為客戶端,作為調(diào)試的發(fā)起者,設(shè)置該值為 n。
(3) suspend
當前應(yīng)用啟動后,是否阻塞應(yīng)用直到被連接,默認值為 y。
在大部分的應(yīng)用場景,這個值為 n,即不需要應(yīng)用阻塞等待連接。一個可能為 y 的應(yīng)用場景是,你的程序在啟動時出現(xiàn)了一個故障,為了調(diào)試,必須等到調(diào)試方連接上來后程序再啟動。
(3) address
暴露的調(diào)試連接端口,默認值為 8000。
(4) onthrow
當程序拋出設(shè)定異常時,中斷調(diào)試。
(5) onuncaught
當程序拋出未捕獲異常時,是否中斷調(diào)試,默認值為 n。
(6) launch
當調(diào)試中斷時,執(zhí)行的程序。
(7) timeout
該參數(shù)限定為 java -agentlib:jdwp=… 可用,單位為毫秒ms。
當 suspend = y 時,該值表示等待連接的超時;當 suspend = n 時,該值表示連接后的使用超時。

IDEA配置遠程調(diào)試
下斷點后能直接停下來。
class文件夾調(diào)試
其實也比較簡單,只需要將他打包成一個jar包或者是war包,然后執(zhí)行如上操作就好了。
cd?src
jar?-cvf?test.jar?*
總的來說調(diào)試還是比較重要,其實不僅僅是jar包的調(diào)試,比如還有Spring Boot(Spring Boot以jar包啟動調(diào)試與上面類似)、Tomcat、weblogic這些。假設(shè)條件允許情況下,做一些審計時候,比如war包,也可以采用遠程調(diào)試的方式進行審計。會更簡單快捷定位一些
鋒哥最新SpringCloud分布式電商秒殺課程發(fā)布
??????
??長按上方微信二維碼?2 秒
感謝點贊支持下哈?
