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