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 に答える