【问题标题】:Debugging, Stepping through AspectJ woven classes methods调试,逐步通过 AspectJ 编织类方法
【发布时间】: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,但我发现答案不完整:

  1. 什么是问题 ID/链接?
  2. 它适用于哪些版本?
  3. 什么时候修复?
  4. 还有其他解决方法吗?
  5. 为什么它可以在 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


    【解决方案1】:

    我认为问题实际上在于 IntelliJ 不支持他们的帧重写以删除 @Around 代码帧,就像他们为 @Before/@After 所做的那样。此问题已提交给他们http://youtrack.jetbrains.com/issue/IDEA-119214

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      相关资源
      最近更新 更多