成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

查看運(yùn)行中Java Class 源碼的三板斧

開(kāi)發(fā) 后端
線上跑了個(gè)應(yīng)用,總感覺(jué)運(yùn)行結(jié)果和你預(yù)期的有出入,而且代碼似乎和你本地的也不一致。這可咋辦,一咬牙,一跺腳停機(jī)重新上線嗎?

 [[352792]]

線上跑了個(gè)應(yīng)用,總感覺(jué)運(yùn)行結(jié)果和你預(yù)期的有出入,而且代碼似乎和你本地的也不一致。這可咋辦,一咬牙,一跺腳停機(jī)重新上線嗎?

那是夠折騰的,我們來(lái)了解幾種不停機(jī)來(lái)查看 Java 應(yīng)用Class 源碼的方式。

像程咬金的功夫一樣,針對(duì)Class 源碼查看,我們也有三板斧。

一般我們要查看一個(gè)運(yùn)行中程序的 Class 源碼,大致會(huì)經(jīng)過(guò)這樣三步:

一、定位,找到這個(gè)Class

二、將遠(yuǎn)程 的 class 文件下載到本地

三、反編譯,查看源碼

這的過(guò)程,應(yīng)該都很清楚,我們重點(diǎn)來(lái)看第一第二步,怎樣找到這個(gè)class并下載到本地。

對(duì)于找Class 來(lái)說(shuō),如果是我們自己開(kāi)發(fā)的代碼,而不是編譯時(shí)或者運(yùn)行時(shí)增強(qiáng)以及生成的,那直接在遠(yuǎn)程服務(wù)器搜索到并下載到本地就OK了。

像那些編譯時(shí)、以及運(yùn)行時(shí)增強(qiáng)過(guò)的Class,甚至動(dòng)態(tài)生成的Class,比如像OpenJPA、Spring/Cglib 的動(dòng)態(tài)代理, 上面的辦法就無(wú)能為力了。

這種情況,可以直接用JDK 的神器 SA 工具(Java虛擬機(jī)的顯微鏡 Serviceability Agent),在 Class browser 里直接搜索,然后選擇 create .class file 文件就會(huì)默認(rèn)保存到 SA Jar 所在的目錄。不過(guò)缺點(diǎn)是,SA連接時(shí)會(huì)把應(yīng)用掛起,直到斷開(kāi)。

還有一種方法是各種增強(qiáng)的類(lèi)庫(kù),都默認(rèn)提供了保存生成類(lèi)的配置,如果此選項(xiàng)打開(kāi),就會(huì)把生成的、增強(qiáng)的class 寫(xiě)到本地。比如像Cglib,在System.property里設(shè)置即可。

System.setProperty(DebuggingClassWriter.DEBUG_LOCATION_PROPERTY, ".");

Cglib 運(yùn)行時(shí)判斷配置,打開(kāi)就會(huì)把生成類(lèi)的 class 二進(jìn)制文件寫(xiě)到本地。

如果類(lèi)庫(kù)沒(méi)有或者你沒(méi)找到這個(gè)選項(xiàng),又確實(shí)想要查看,那可以 Attach 一個(gè) Java Agent 到JVM上。用Instrument或者ByteBuddy免 Jar 包掛上去,參考之前的文章(不用Jar 包的Agent?幾行代碼實(shí)現(xiàn)運(yùn)行時(shí)增強(qiáng))

有了Agent 的 transformer,大顯身手就看你的了。

本文轉(zhuǎn)載自微信公眾號(hào)「Tomcat那些事兒  」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Tomcat那些事兒公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Tomcat那些事兒
相關(guān)推薦

2013-07-03 11:13:58

DevOps

2014-07-29 11:25:18

LinuxMySQL

2011-03-09 15:23:25

Windows Ser

2017-03-23 10:54:58

LINUXMYSQL優(yōu)化

2009-02-19 10:20:00

2020-09-03 15:32:08

Wireshark數(shù)據(jù)包分析

2017-08-21 23:50:45

線上內(nèi)存OOM

2019-05-30 14:30:42

技術(shù)管理架構(gòu)

2012-11-08 16:05:23

2020-03-09 13:37:49

Serverless無(wú)服務(wù)器騰訊云

2022-07-22 09:55:29

軟件工程師

2021-02-15 22:07:18

項(xiàng)目策略模式

2019-08-13 16:23:19

JavaScript數(shù)組方法

2018-06-19 08:50:15

崗位總監(jiān)管理

2010-12-29 10:29:31

Linux磁盤(pán)管理dfdu

2022-05-07 11:47:36

服務(wù)器架構(gòu)

2022-03-29 18:20:10

戴爾

2019-11-14 08:34:08

LinuxMySQLCPU

2021-03-29 17:51:00

瑞數(shù)信息攻防演練

2010-05-28 09:17:45

ARM服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品无| 97超碰成人 | 全部免费毛片在线播放网站 | 亚洲播放 | 免费激情网站 | 免费在线精品视频 | 性高朝久久久久久久3小时 av一区二区三区四区 | 国产精品久久久久久二区 | 99婷婷| 国产草草视频 | 91成人在线 | 精品国产乱码久久久久久闺蜜 | 91.com视频 | 国产自产c区 | 老头搡老女人毛片视频在线看 | 视频一区 国产精品 | 亚洲日本欧美日韩高观看 | 男女网站免费 | 欧美成人一区二区三区片免费 | 精品一二区 | 热re99久久精品国产99热 | www.久草| 日韩不卡一区二区 | 婷婷在线视频 | 精品一区二区三区入口 | 婷婷国产一区 | 国产在线一区二区三区 | 国产剧情久久 | 欧美无乱码久久久免费午夜一区 | 欧美亚洲激情 | 精品久久精品 | 黄色免费在线网址 | 欧美日韩在线电影 | 久久综合久久久 | 久久99精品久久久久久国产越南 | 亚洲福利片 | 国产精品久久久久久亚洲调教 | 亚洲精品久久区二区三区蜜桃臀 | 亚洲视频区| 精品久久久久久久 | 日韩国产一区 |