![](/img/trans.png)
[英]How to build call hierarchy for lombok generated method in intellij-idea
[英]How to set a breakpoint in a setter method in IntelliJ IDEA that is generated with Lombok?
IntelliJ IDEA 中有沒有辦法在Lombok生成的 setter 方法中設置斷點?
這在某些調試場景中非常有用,例如查看何時從 Hibernate 等框架調用 setter。
實際上,生成的setter方法顯示在IntelliJ IDEA(使用中的Lombok插件)的結構視圖中。 但是我還沒有找到通過上下文菜單等設置斷點的方法。
作為解決方法,您可以使用Java Field Watchpoint 。 在這種情況下,對該字段的每次訪問/修改都會導致一個斷點。
這種方法的缺點是在您直接訪問/修改字段或使用 getter/setter 方法時都會導致線程暫停。
但是,當您使用 setter 方法捕獲斷點時,IDEA 還會在“變量”窗口中顯示一個參數(與用於觀察點的字段同名),並且斷點不在字段行中顯示,而是在類行中顯示.
以下簡短說明,如何創建現場觀察點,復制自https://www.jetbrains.com/idea/help/creating-field-watchpoints.html :
根據我的理解,你不能這樣做,因為 lombok 正在以一種變異代碼沒有自動生成部分的行號的方式改變你的字節碼。
這樣做是為了讓您的源代碼行始終與您的字節碼相匹配。 如果它們不匹配,當您將斷點放置在一行上但執行沒有停止或在其他地方停止(因為行號不匹配)時,您可能會陷入困境。
但作為交換,Lombok 失去了調試生成代碼的能力(你不能在沒有行號的行上放置斷點)。 您必須依賴生成的代碼是正確的事實。
在結構視圖中選擇 setter 並右鍵單擊。 彈出菜單包含一個菜單項“切換方法斷點”(與您可以在類中的默認構造函數中設置斷點的方式相同,而在其 java 代碼中沒有默認構造函數)
我贏了:
只花了我 6 年 :-)
在 Eclipse 上:右鍵單擊類大綱或類型層次結構中的方法,然后選擇“切換方法斷點”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.