Używam Spring (3.2.2) + AspectJ (1.7.2) Load Time Weaving. Rozwijanie przy użyciu Netbeans 7.3.Debugowanie, przejście przez metody klas tkankowych AspectJ
Zauważyłem, że nie mogę "przekroczyć" podczas debugowania metod w klasach, które zostały utkane przez AspectJ, na przykład wewnątrz metod opatrzonych adnotacją @Transactional.
Jestem w stanie wprowadzić punkty przełamania, ale kiedy "przejdę", przepływ debugowania przeskakuje do linii 1 klasy, a po ponownym kliknięciu "Krok po kroku" przechodzi do innych klas.
próbował uruchomić go w IntelliJ 12.1.3, sam problem jak w Netbeans ...
Podczas debugowania tego samego projektu w Eclipse Juno SR2, w „krok nad” będzie w porządku, z wyjątkiem tego, że dla pierwszy wiersz metody muszę kliknąć dwa razy.
Próbowałem dodać opcję -XnoInline do pliku aop.xml, ale to nie pomogło.
Znalazłem podobne pytanie Eclipse debug stepping with AspectJ ale uważam, że odpowiedź nie jest kompletny:
- Jaki jest problem id/link?
- Do jakich wersji ma zastosowanie?
- Kiedy to zostanie naprawione?
- Czy są inne sposoby obejścia problemu?
- Dlaczego działa w środowisku Eclipse, czy ma obejście/funkcję?
Update 1
nie wspominając, że debugowania w IntelliJ IDEA była przez zdalnego debugowania. Kiedy debugowałem bezpośrednio w IDE, nadepnęłam na ...
W Eclipse próbowałem i działa dobrze zarówno podczas normalnego, jak i zdalnego debugowania.
W protokole Netbeans neigher normalne/lokalne lub zdalne debugowanie nad fine (linia po linii) - nadal problem.
Aktualizacja 2
Znalazłem się, co jest problemem w debugowania tego kodu.
Sprężyna w wersji 3.2.2 zmieniła aspekt @Transactional, zastąpił @Before i @ Po połączeniu z @Around.
Podczas wykonywania testów ze sprężyną < 3.2.2, debugowanie działa dobrze.
Szkoda, że @Around sprawia, że metody @Transactional są prawie niemożliwe do debugowania.
Czy jest to znany problem (przy użyciu @Around) w AspectJ?
Dodałem wiosenny numer związany z tym problemem: https://jira.springsource.org/browse/SPR-10596
Update 3
w NetBeans 7.4, możliwe jest, aby używać "krok nad ekspresją (Shift + F8)" zamiast "Krok po kroku (F8)", aby przejść przez kod.