我使用“The AspectJ Development Tools”插件进行Eclipse设置。我正在尝试调试一些使用AspectJ并逐步执行它的代码,但它无法匹配源代码行,因为AspectJ在编译时添加了额外的东西。似乎没有人抱怨看起来像是一个主要的缺陷(无法调试!),所以我希望我只需要调整一些东西来使其工作。我做错了什么?
答案 0 :(得分:3)
到目前为止,我遇到了您仅使用@Around
建议所描述的行为。 @Before
或@After
建议从未混淆我使用的调试器。
@Around
在编织类中内联(包括目标类和方面本身)。这与我尝试过的其他建议不同。内联使得调试器很难跟上流程。
您可以在AspectJ编译器中禁用内联,这将以调试器友好的方式生成编织类。禁用内联可能会产生更慢的代码和更多的编织类(创建辅助类)。
maven方式:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${java.compiler.source}</source>
<target>${java.compiler.target}</target>
<complianceLevel>${java.compiler.target}</complianceLevel>
<!-- Avoid some optimizations that make debugger useless. -->
<XnoInline>true</XnoInline>
</configuration>
</plugin>
答案 1 :(得分:1)
是的,这是AspectJ的一个错误。单步执行建议附加了不正确的文件属性。最好的解决方法是在您的建议中委托一个正确的方法,并且行号将对齐。