调试,单步执行AspectJ编织类方法

时间:2013-05-23 14:29:01

标签: eclipse spring debugging netbeans aspectj

我正在使用Spring(3.2.2)+ AspectJ(1.7.2)加载时间编织。 使用Netbeans 7.3开发。

我注意到在调试由AspectJ编写的类中的方法时,我无法“跳过”,例如在使用@Transactional注释的内部方法中。

我能够提供断点,但是当我“跳过”时,调试流程跳转到类的第1行,如果再次点击“跳过”,它会跳转到其他类。

尝试在IntelliJ 12.1.3中运行它,与Netbeans中的问题相同......

在Eclipse Juno SR2中调试同一个项目时,“跳过”很顺利,但是对于方法中的第一行我必须单击两次。

尝试将-XnoInline选项添加到aop.xml,但它没有帮助。

我发现了一个类似的问题Eclipse debug stepping with AspectJ,但我发现答案未完成:

  1. 问题ID /链接是什么?
  2. 适用于哪些版本?
  3. 什么时候修好?
  4. 还有其他解决方法吗?
  5. 为什么它在Eclipse中工作,是否有解决方法/功能?
  6. 更新1

    我没有提到Intellij IDEA的调试是通过远程调试。 当我直接在IDE中进行调试时,它的结果很好......

    在Eclipse中我尝试过它在正常和远程调试中都能正常工作。

    在Netbeans neigher普通/本地也没有远程调试步骤(一线接一行) - 仍然是一个问题。

    更新2

    我发现调试该代码有什么问题。

    版本3.2.2中的Spring改变了@Transactional方面,用@Around替换了@Before和@After组合。

    使用Spring<运行我的测试时3.2.2,调试工作正常。

    令人遗憾的是@Around使@Transactional方法几乎无法调试。

    这是AspectJ中的已知问题(使用@Around)吗?

    我添加了与此问题相关的弹出问题: https://jira.springsource.org/browse/SPR-10596

    更新3

    在Netbeans 7.4中,可以使用“Step over expression(Shift + F8)”而不是“Step over(F8)”来逐步执行代码。

1 个答案:

答案 0 :(得分:0)

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