![](/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.