Pisanie kodu to połowa sukcesu. Trzeba to jeszcze dopracować, żeby działało poprawnie. IDE i narzędzia do debugowania bardzo nam w tym pomagają.
Na przykładzie IntelliJ IDEA proponuję zapoznać się z tym, w jaki sposób możemy dowiedzieć się, co dzieje się z naszym kodem podczas jego działania. Debugowanie to szeroki temat, więc ta recenzja nie oferuje głębokiego nurkowania, jak nurek. Ale na pewno mam nadzieję na snorkeling)
Następnie musimy uruchomić wybrany przez nas projekt na serwerze. Proces ten opisany jest w małej dokumentacji, którą można znaleźć w samym projekcie:
Następnie w logu serwera możemy zobaczyć, jak nowy projekt został „wdrożony”:
Następnie wchodzimy na stronę
Jeśli wszystko jest w porządku, poniżej pojawi się komunikat na ten temat:
Naciśnij Enter, aby przejść do znalezionego źródła:
Widzimy więc, że podczas rejestracji wywoływany jest MemberController.register . Najwyraźniej musi to być jakiś rodzaj klasy Java. Kliknij
Rzeczywiście, istnieje taka klasa. Wejdźmy w to. Najwyraźniej powinna istnieć metoda rejestru. Kliknij
Rzeczywiście, znaleźliśmy to. Najwyraźniej rejestracja odbywa się tutaj, w MemberRegistration.register . Naciśnij klawisz Ctrl i kliknij metodę, aby „wpaść” w nią:
Ustawmy teraz „punkt przerwania” lub punkt przerwania. Jest to znacznik informujący, gdzie należy wstrzymać wykonywanie kodu. W tym momencie będziemy mieli okazję dowiedzieć się wielu ciekawych rzeczy. Aby go umieścić należy kliknąć miejsce po prawej stronie numeru linii.
Na stronie http://localhost:8080/wildfly-hibernate4 wypełnij pola i kliknij przycisk Zarejestruj. Ikona pomysłu na panelu zacznie migać:
Wchodząc do Idea, widać, że w panelu debugowania znajduje się wiele ciekawych informacji:
Tutaj możesz zobaczyć wartość pól obiektu. Na przykład, z czego składa się zarejestrowany Członek:
Świetnie. Co jeszcze możemy zrobić? Możemy otworzyć menu kontekstowe i wybrać tam opcję Oceń wyrażenie (lub poprzez menu Uruchom -> Oceń wyrażenie). Jeszcze lepiej, w panelu sterowania debugera:
To super fajna umiejętność w punkcie przerwania, mająca dostęp do wszystkiego, do czego ma dostęp ten punkt kodowy, aby wykonać dowolny kod, który mógłby zostać wykonany w tym punkcie. Na przykład:
Na panelu sterowania debugera znajdują się również przyciski sterujące, które odpowiadają za to, gdzie chcesz przenieść kontrolę przepływu programu. Czy to nie magia?) Wciskając przycisk F8 (Step Out) przechodzimy przez kod bez wpisywania metod. Naciskając klawisz F9, przestajemy przeglądać wiersze kodu za pomocą debugera i przekazujemy debugerowi kontrolę nad wykonaniem programu. Jeśli naciśniemy F7 (Step Into), to przejdziemy przez kod, wpisując każdą metodę, którą spotkamy po drodze. Nawiasem mówiąc, zwróć szczególną uwagę na ten blok informacyjny:
Pokazuje wątek, w którym się znajdujemy, i metody na stosie bieżącego wątku. Ale to nie wszystko. Dla wygody możesz otworzyć zakładkę ramki. Aby to zrobić, należy włączyć:
Teraz w zakładce ramki widzimy informację o przejściu z metody na metodę, bo zacząłem przeglądać kod za pomocą Step In.
Jak widzimy, nie zawsze da się nas przenieść tam, gdzie aktualnie wykonywany jest program. Jesteśmy teraz w „getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)”. Ale tak naprawdę jesteśmy w trakcie realizacji. Świadczy o tym klasa określona przez to:
Spójrzmy na to. Jak wiemy, wskazuje na bieżący obiekt. Jesteśmy w TransactionScopedEntityManager. Dlaczego Idea nie może pokazać nam kodu? Faktem jest, że IntelliJ Idea obecnie nie wie o żadnym TransactionScopedEntityManager, ponieważ nie jest podłączony do naszego projektu (nie ma go w zależnościach projektu). Kiedy serwer aplikacji jest uruchomiony, działa w nim wiele, wiele różnych bibliotek. Ale wiemy o nich bardzo niewiele, ponieważ... ogólnie rzecz biorąc, nie musimy zagłębiać się w elementy wewnętrzne, wystarczy, że to zadziała. Czasem jednak wymaga tego praca lub zainteresowania sportowe. Następnie musisz poinformować Idea o tej bibliotece, aby wiedział, skąd wziąć kod zajęć.
Teraz poczekajmy na wynik. Nie będzie kazał ci czekać)
Musimy teraz znaleźć gdzieś kod źródłowy. I są 2 opcje:
Przejdźmy teraz do opisu zależności. Na tej stronie możesz pobrać kod źródłowy. Świetnie, teraz mamy pobrany kod. Pozostaje tylko podłączyć bibliotekę. Łączy się niezwykle prosto. Musimy otworzyć ustawienia projektu:
Tam wybieramy „Biblioteki” i otrzymane kody źródłowe dodajemy do sekcji „Źródła”, a w sekcji „Klasy” wskazujemy sam plik jar biblioteki z katalogu WildFly, który znaleźliśmy za pomocą Far Managera. Następnie, gdy przejdziemy przez klawisz F7, zobaczymy zawartość klas AbstractEntityManager i TransactionScopedEntityManager, a także staniemy się dostępni poprzez wyszukiwanie według klas za pomocą Ctrl+N.
Teraz punkt przerwania zostanie uruchomiony tylko wtedy, gdy nazwa to Maximilian. Kliknięcie przycisku Więcej spowoduje udostępnienie rozszerzonego zestawu ustawień punktów przerwania.
I utwórz nową regułę dla wybranego typu wyjątku:
Na przykład dla NPE:
#Wiaczesław
Wstęp
Częścią pisania kodu jest jego debugowanie. A jeśli Twoje zadania obejmują obsługę kodu, debugowania będzie jeszcze więcej. Cóż, w dodatku za pomocą debugowania można zbadać pracę używanych bibliotek i frameworków tak głęboko, jak można zanurzyć się w dżungli cudzego kodu. Do naszego nurkowania będziemy potrzebować:- Środowisko programistyczne: bezpłatna wersja społecznościowa IntelliJ Idea
- Zainstalowałem Mavena
- Serwer aplikacji WildFly 12.0.0.Final
- Kod źródłowy oficjalnych przykładów: Kod źródłowy szybkiego startu
bin\standalone.bat
\hibernate4\README.adoc
Jak wskazano w tej dokumentacji, musimy uruchomić komendę w katalogu hibernate4: mvn clean package wildfly:deploy
Czekamy na wiadomość, że kompilacja zakończyła się pomyślnie:
http://localhost:8080/wildfly-hibernate4
i powinniśmy wyświetlić stronę z formularzem „ Rejestracja członka ”. Tak więc nasze przygotowania do eksperymentów zostały zakończone i możemy zaczynać)) Przed nami będzie wiele zdjęć dla przejrzystości, więc przygotujcie się)
Zdalne debugowanie
Musimy więc skonfigurować tryb debugowania, aby nasze IDE kontrolowało wykonywanie kodu na serwerze aplikacji. IntelliJ Idea jest dostępny w dwóch wersjach: bezpłatnej (Społeczność) i płatnej (Ultimate). To drugie można oficjalnie wypróbować w formie EAP. W wersji Ultimate wszystko jest proste – serwer aplikacji można uruchomić bezpośrednio z IDE w trybie debugowania. Ale w wersji Community musisz zrobić kilka rzeczy ręcznie. Rozważmy zatem bardziej skomplikowany przypadek, tj. ustawienie w wersji Community. Wersja społecznościowa ma pewne ograniczenia. W szczególności nie można z niego uruchomić serwera aplikacji. Można jednak ustawić zdalne debugowanie (Remote Debug), gdy gdzieś osobno znajduje się działający serwer z potrzebną nam aplikacją. Skorzystajmy z opisu konfiguracji z tego miejsca: Zdalne debugowanie Wildfly w wydaniu społecznościowym IntelliJ Idea (konfigurowanie konfiguracji zdalnego uruchamiania dla portu 8787). Po konfiguracji uruchamiamy naszą nową konfigurację w trybie debugowania:Proces debugowania
Debugujmy, zapisując rekord. Aby to zrobić, musimy najpierw zdecydować o miejscu, które będziemy eksplorować. Sądząc po oknie, potrzebujemy przycisku „Zarejestruj się”. Znajdźmy to w kodzie. Potrzebujemy więc elementu, który powinien mieć tekst: „Zarejestruj się”. Albo ona powinna mieć z tym coś wspólnego. KliknijCtrl+Shift+F
i poszukaj Zarejestruj się w cudzysłowie. Widzimy, że istnieje taki plik w pliku Index.xhtml.
Ctrl+N
i wyszukaj:
Ctrl+F12
i poszukaj metody rejestracji
Podłączanie bibliotek innych firm w celu debugowania
Najpierw sami musimy zrozumieć, jaki rodzaj biblioteki wymaga połączenia. Pierwszy sposób jest najtrudniejszy - wyszukaj w Internecie. Szybkość i wynik osiągnięcia rezultatu w dużej mierze zależą od tego, jak dobrze zarządzano projektem. Na przykład WildFly ma otwarte repozytorium. Kiedy więc wygooglujemy „TransactionScopedEntityManager”, przejdziemy do https://github.com/wildfly/wildfly/tree/master/jpa/subsystem i okaże się, że potrzebujemy wildfly-jpa. Druga metoda jest poprawna. Gdzie jest serwer, spójrz tam. Pomóc w tym mogą różne środki. Na przykład w systemie Windows może to być Far Manager . Poniżej znajduje się przykład algorytmu wyszukiwania. Po jego zainstalowaniu i uruchomieniu, za pomocą Tab przejdź do jednej z zakładek, korzystającAlt+F1
z lewej lub Alt+F2
prawej zakładki i wybierz potrzebną nam partycję na dysku twardym. Jest całkiem możliwe, że sam katalog Far Managera jest otwarty w Far Managerze po instalacji. Aby przejść do katalogu głównego dysku, naciśnij Ctrl + \
. Za pomocą Alt+F
otwórz okno wyszukiwania, zacznij wpisywać nazwę katalogu i po znalezieniu katalogu naciśnij klawisz Enter. To wyszukiwanie jest sprytne i wyróżnia te katalogi, które pasują do wyszukiwanego tekstu. Jeśli wprowadzisz znaki, dla których nie ma folderów, nie będzie można wprowadzić takich znaków. W ten sposób przechodzimy do katalogu serwera aplikacji. Załóżmy, że nie wiemy, gdzie na serwerze znajdują się moduły. Być może po raz pierwszy w życiu słyszysz o jakimś rodzaju WildFly. Dlatego kliknij natychmiast tutaj, Alt+F7
aby wyszukać pliki. Logika podpowiada więc: potrzebujemy pliku z biblioteką. Oznacza to, że potrzebujemy słoika. Wewnątrz powinna znajdować się klasa TransactionScopedEntityManager. Ponieważ class = plik, a następnie poszukaj „zawiera”. Czyli coś takiego:
- Bardzo przydatna wersjaeye.com
- Centralne repozytorium Mavena
GO TO FULL VERSION