2013-05-23 5 views
5

Sto usando Spring (3.2.2) + AspectJ (1.7.2) Load Time Weaving. Sviluppo utilizzando Netbeans 7.3.Debugging, passaggio attraverso i metodi delle classi tessute AspectJ

Ho notato che non posso "scavalcare" mentre eseguo il debug dei metodi nelle classi che sono state tessute da AspectJ, ad esempio all'interno dei metodi annotati con @Transactional.

Sono in grado di inserire punti di interruzione, ma quando "Passa" il flusso di debug salta alla riga 1 della classe e se si fa nuovamente clic su "Passa sopra", si passa ad altre classi.

provato a farlo funzionare in IntelliJ 12.1.3, lo stesso problema come in Netbeans ...

Quando il debug lo stesso progetto in Eclipse Juno SR2, il "scavalcare" sta andando bene, con l'eccezione che per la prima riga nel metodo devo fare clic due volte.

Tentativo di aggiungere l'opzione -XnoInline a aop.xml, ma non è stato d'aiuto.

ho trovato una domanda simile Eclipse debug stepping with AspectJ ma trovo la risposta non completa:

  1. Qual è il problema id/link?
  2. A quali versioni si applica?
  3. Quando verrà risolto?
  4. Esistono altri rimedi?
  5. Perché funziona in Eclipse, ha una soluzione alternativa?

Update 1

non ho detto che la messa a punto in IntelliJ IDEA è stato attraverso il debug remoto. Quando ho eseguito il debug direttamente nell'IDE, è passato oltre ...

In Eclipse ho provato e funziona bene sia nel debug normale che remoto.

In Netbeans si verificano altri problemi di normale/locale o di debug remoto su linea sottile (riga dopo riga): è ancora un problema.

Update 2

ho scoperto qual è il problema di debug quel codice.

Spring nella versione 3.2.2 ha modificato l'aspetto @Transactional, sostituito con @Before e @After con @Around.

Quando eseguo i miei test con Spring < 3.2.2, il debug funziona correttamente.

È un peccato che @Around renda quasi impossibile eseguire il debug dei metodi @Transactional.

Si tratta di un problema noto (utilizzando @Around) in AspectJ?

Ho aggiunto un numero di primavera relative a questo problema: https://jira.springsource.org/browse/SPR-10596

Update 3

in NetBeans 7.4, è possibile utilizzare "Passo sopra espressione (Shift + F8)" al posto "Passaggio sopra (F8)" per scorrere il codice.

risposta

0

Penso che il problema sia in realtà con IntelliJ che non supporta la riscrittura dei frame per rimuovere i frame di codice @Around nello stesso modo in cui fanno per @ Before/@ After. Questo problema è stato archiviato con loro http://youtrack.jetbrains.com/issue/IDEA-119214