【发布时间】:2013-05-23 14:29:01
【问题描述】:
我正在使用 Spring(3.2.2) + AspectJ (1.7.2) 加载时间编织。 使用 Netbeans 7.3 进行开发。
我注意到,在调试由 AspectJ 编织的类中的方法时,我不能“跳过”,例如在使用 @Transactional 注释的方法中。
我可以设置断点,但是当我“跳过”时,调试流程会跳转到类的第 1 行,如果再次单击“跳过”,它会跳转到其他类。
尝试在 IntelliJ 12.1.3 中运行它,与 Netbeans 中的问题相同...
在 Eclipse Juno SR2 中调试同一个项目时,“跨步”运行良好,但方法中的第一行我必须单击两次。
尝试在 aop.xml 中添加 -XnoInline 选项,但没有帮助。
我发现了一个类似的问题Eclipse debug stepping with AspectJ,但我发现答案不完整:
- 什么是问题 ID/链接?
- 它适用于哪些版本?
- 什么时候修复?
- 还有其他解决方法吗?
- 为什么它可以在 Eclipse 中运行,是否有解决方法/功能?
更新 1
我没有提到 Intellij IDEA 中的调试是通过远程调试。 当我直接在 IDE 中调试时,它跳过了很好...
在 Eclipse 中我已经尝试过了,它在正常和远程调试中都能正常工作。
在 Netbeans 中,正常/本地或远程调试步骤都很好(逐行) - 仍然是一个问题。
更新 2
我发现调试该代码时有什么问题。
Spring 在 3.2.2 版本中改变了@Transactional 方面,用@Around 替换了@Before 和@After 组合。
使用 Spring
很遗憾@Around 让@Transactional 方法几乎无法调试。
这是 AspectJ 中的已知问题(使用 @Around)吗?
我添加了一个与此问题相关的弹簧问题: https://jira.springsource.org/browse/SPR-10596
更新 3
在 Netbeans 7.4 中,可以使用“Step over expression (Shift+F8)”而不是“Step over (F8)”来单步执行代码。
【问题讨论】:
标签: eclipse spring debugging netbeans aspectj