簡體   English   中英

Byteman 實施細節

[英]Byteman Implementation Details

我正在查看 byteman 實現以了解它們如何專門用於跟蹤變量 AT/AFTER nth 讀取、AT/AFTER nth 寫入等情況。在它們的實現中,他們讀取 class 兩次以檢查它是否與指定的規則匹配用戶使用 RuleCheckMethodAdapter 並第二次使用 RuleTriggerAdapter 在 class 的感興趣位置實際注入字節碼(觸發器)。 我不明白的是為什么我們需要 2 次通過,為什么不能在第一次通過時,如果與規則匹配,我們可以添加觸發器? 對此的任何見解都會有所幫助。

所有位置類型的所有注射階段都使用兩個通道。 第一遍是一個驗證步驟,確保該位置實際上與方法字節碼中特定點的代碼匹配。 它記錄允許在該位置適當地執行注射所需的信息,並將其保存以供第二遍使用。 注意這第一階段總是一個非常便宜和快速的代碼掃描。

第二階段跟蹤更多關於代碼結構、抽象機器堆棧布局和類型等的信息。這部分是為了確保它正確地進行注入,但它也必須做很多工作以確保它可以正確路由注入區域之外的異常。 在明確該規則適用之前,沒有必要產生這種開銷。

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM