5

我有带有“AspectJ 开发工具”插件的 Eclipse 设置。我正在尝试调试一些使用 AspectJ 的代码并单步执行它,但由于 AspectJ 在编译时添加了额外的东西,它无法匹配源代码行。似乎没有其他人抱怨似乎是一个重大缺陷(无法调试!),所以我希望我只需要调整一些东西以使其工作。我究竟做错了什么?

4

2 回答 2

3

到目前为止,我遇到了您仅通过@Around建议描述的行为。@Before@After建议从未混淆我使用的调试器。

@Around默认情况下内联在编织类中(包括目标类和方面本身)。这与我尝试过的其他建议不同。内联使调试器即使不是不可能也很难遵循流程。

您可以在 AspectJ 编译器中禁用内联,这将以调试器友好的方式生成编织类。禁用内联可能会产生更慢的代码和更多的编织类(创建辅助类)。

行家方式:

<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>
于 2015-09-18T10:25:26.843 回答
2

是的,这是 AspectJ 的一个错误。单步执行建议附加了不正确的文件属性。最好的解决方法是在您的建议中委托一个适当的方法,并且行号将对齐。

于 2013-02-12T23:46:00.217 回答