greys使用
1、greys是什么
如果想在線上debug一個(gè)方法或者想看方法的返回,不需要申請(qǐng)線上debug,不需要重新加日志重新發(fā)布,直接watch指定的函數(shù)就可以看到調(diào)用結(jié)果的情況下有什么好的工具?答案是greys。
Greys是一個(gè)全新在線診斷工具。
2、greys原理
在說明greys原理之前我們看看jvm的attach機(jī)制,attach機(jī)制是jvm提供一種jvm進(jìn)程間通信的能力,能讓一個(gè)進(jìn)程傳命令給另外一個(gè)進(jìn)程,并讓它執(zhí)行內(nèi)部的一些操作。比如說我們?yōu)榱俗屃硗庖粋€(gè)jvm進(jìn)程把線程dump出來,那么我們跑了一個(gè)jstack的進(jìn)程,然后傳了個(gè)pid的參數(shù),告訴它要哪個(gè)進(jìn)程進(jìn)行線程dump,既然是兩個(gè)進(jìn)程,那肯定涉及到進(jìn)程間通信,以及傳輸協(xié)議的定義,比如要執(zhí)行什么操作,傳了什么參數(shù)等。
理解了attach機(jī)制我們?cè)賮碚fgreys,greys是使用了基于attach實(shí)現(xiàn)的Instrumentation實(shí)現(xiàn)的類似AOP的功能。
3、greys實(shí)戰(zhàn)
下載地址:http://ompc.oss.aliyuncs.com/greys/release/greys-1.7.6.4-bin.zip
安裝:./install-local.sh
啟動(dòng)agent:./ga.sh pid
啟動(dòng)監(jiān)控:./greys.sh pid@ip:8989
./greys.sh help
Greys命令詳解:
| help | 查看命令的幫助文檔,每個(gè)命令和參數(shù)都有很詳細(xì)的說明 |
| sc | 查看JVM已加載的類信息 |
| sm | 查看已加載的方法信息 |
| monitor | 方法執(zhí)行監(jiān)控 |
| trace | 渲染方法內(nèi)部調(diào)用路徑,并輸出方法路徑上的每個(gè)節(jié)點(diǎn)上耗時(shí) |
| ptrace | 強(qiáng)化版的trace命令。通過指定渲染路徑,并可記錄下路徑中所有方法的入?yún)ⅰ⒎抵?#xff1b;與tt命令聯(lián)動(dòng) |
| watch | 方法執(zhí)行數(shù)據(jù)觀測 |
| tt | 方法執(zhí)行數(shù)據(jù)的時(shí)空隧道,記錄下指定方法每次調(diào)用的入?yún)⒑头祷匦畔?#xff0c;并能對(duì)這些不同的時(shí)間下調(diào)用進(jìn)行觀測 |
| stack | 輸出當(dāng)前方法被調(diào)用的調(diào)用路徑 |
| js | 支持使用JavaScript腳本;支持CommonJS部分規(guī)范模塊化(BMD規(guī)范) |
| version | 輸出當(dāng)前目標(biāo)Java進(jìn)程所加載的Greys版本號(hào) |
| quit | 退出greys客戶端 |
| shutdown | 關(guān)閉greys服務(wù)端 |
| rest | 重置增強(qiáng)類,將被greys增強(qiáng)過的類全部還原 |
| session | 查看當(dāng)前會(huì)話 |
| jvm | 查看當(dāng)前JVM的信息 |
tt -t com\.springboot\.services\.HeheService hehe
參考:https://github.com/oldmanpushcart/greys-anatomy/wiki/greys-pdf
總結(jié)
- 上一篇: Flutter学习记录(一、Flutte
- 下一篇: Flutter学习记录(二、Flutte