Myśli, porady, tutoriale na temat środowiska Eclipse (i nie tylko)...

Pokazywanie postów oznaczonych etykietą widok. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą widok. Pokaż wszystkie posty

wtorek, 14 kwietnia 2009

O debugowaniu część III

No i znowu minął ponad miesiąc bez nowości, ale oto jestem z garścią kolejnych informacji na temat mechanizmu debugowania w Eclipsie.
W poprzednim poście mówiliśmy o właściwościach punktów wstrzymań, spójrzmy teraz jak można sprawnie nimi zarządzać - służy do tego widok Breakpoints (Window->Show View->Other->Debug->Breakpoints):

W widoku tym możemy w prosty sposób za pomocą opcji w pasku narzędzi:
  • dodawać i usuwać punkty wstrzymań (pojedynczo lub wszystkie za jednym razem)
  • wyświetlić tylko punkty wstrzymań aktywne dla wybranej platformy docelowej (np. dla debugowania kodu w C, Javie lub dla skryptów Anta widoczne będą tylko punkty wstrzymań danego typu)
  • przejść do miejsca w kodzie, w którym punkt dany punkt wstrzymań jest ustawiony
  • deaktywować wszystkie punkty wstrzymań
  • dodać punkt wstrzymań wyjątków
Natomiast gdy wejdziemy w menu widoku

będziemy mogli:
  • grupować punkty wstrzymań
  • definiować zbioru robocze punktów wstrzymań
  • pokazywać nazwy kwalifikowane
Jeśli chcemy podzielić się z kimś naszym zbiorem punktów wstrzymań to powinniśmy zainteresować się opcją ich eksportu File->Export->Run/Debug->Breakpoints i importu File->Import->Run/Debug->Breakpoints.

wtorek, 24 lutego 2009

O debugowaniu część II

W poprzednim poście mówiliśmy o różnych typach punktów wstrzymań (ang. breakpoints), dzisiaj proponuję spojrzeń na ich ciekawe właściwości, które mogą zwiększyć naszą wydajność przy szukaniu błędów.
Żeby dostać się do właściwości punktu wstrzymań wystarczy kliknąć na nim (na lewym bocznym pasku edytora, lub też w widoku Breakpoints) prawym przyciskiem myszy i wybrać opcję Breakpoint Properites.

Hit Count


W polu Hit Count podajemy wartość całkowitą dodatnią N, co spowoduje, że punkt wstrzymań będzie aktywny, gdy wykonanie programu trafi na niego N-ty raz.
Żeby lepiej to zobrazować spójrzmy na przykład poniżej. Załóżmy, że mamy następujący kod z ustawionym punktem wstrzymań: 

wartość właściwości Hit Count dla punktu wstrzymań ustawiamy na 7 i uruchamiamy debugowanie. Do momenty zatrzymania się na punkcie wstrzymań na konsoli zobaczymy:

czyli kod wykonał się sześć razy i gdy po raz siódmy trafił na punkt wstrzymań zatrzymał swoje wykonywanie.

Warunki (ang. Conditions)

Właściwość ta daje nam możliwość ustawiania (jak sama nazwa wskazuje) warunków, po spełnieniu których nasz punkt wstrzymań będzie aktywny i zatrzyma wykonywanie programu. Kiedy może się to przydać? Wyobraźcie sobie, że macie jakąś pętlę, w której wykonujecie operacje na 1000-elementowej liście i dla kilku elementów pętla działa niepoprawnie. Można sobie z tym poradzić ustawiając odpowiednie instrukcje warunkowe w pętli i dla tych instrukcji ustawić punkty wstrzymań, ale takie rozwiązanie powoduje, że w naszym kodzie pojawia się niepotrzebny bałagan. Lepiej do takich celów wykorzystać właśnie Warunki.
Weźmy kod z wcześniejszego przykładu i ustawmy następnujący warunek na punkcie wstrzymań:

Po uruchomieniu programu w trybie debugowania na konsoli zobaczymy:

Przy konstrukcji warunku możemy korzystać ze wszystkich zmiennych dostępnych w obrębie kontekstu danego punktu wstrzymań. W polu do wpisywania Warunku działa również Content Assist, więc można korzystać z podpowiedzi dostępnych pod skrótem Ctrl+Space.

czwartek, 19 lutego 2009

O debugowaniu część I

Trochę długo nic nowego się nie pojawiało, czas to zmienić. Na innym blogu, na którym się udzielam rozpocząłem jakiś czas temu serię postów na temat eclipsowego debuggera. W pewnym momencie Jacek Laskowski zwrócił moją uwagę na fakt, że brakuje takich informacji w języku polskim, więc postanowiłem również tutaj napisać kilka postów na temat debuggera, którego możecie znaleźć w Eclipsie.

Pewnie powinienem zacząć od tego w jaki sposób uruchamiać aplikację w trybie debug, ale żeby na samym początku nikogo nie zanudzić i jednocześnie, żeby nie było za trudno zacznijmy może od przeglądu dostępnych w Eclipsie typów punktów wstrzymań (ang. breakepoints).
Podczas debugowania możemy korzystać z:
  • punktów wstrzymań linii
  • punktów wstrzymań metod
  • punktów wstrzymań pól
  • punktów wstrzymań klasy
  • punktów wstrzymań wyjątków
Punkty wstrzymań linii

Jest to chyba najpopularniejszy rodzaj punktów wstrzymań, sam kiedyś korzystałem jedynie z nich, dlatego też nie ma chyba potrzeby, żeby wchodzić w szczegóły. Takie punkty wstrzymań ustawiamy (klikając na lewym bocznym pasku edytora przy odpowiedniej linii) jeśli chcemy, aby wykonywanie naszego programu zatrzymało się na konkretnej linii.


Punkty wstrzymań metod

Czasami może nas interesować sytuacja, kiedy program wchodzi i/lub wychodzi z jakiejś metody, wówczas przydatne stają się punkty wstrzymań metod. Punkty takie ustawiamy klikając na lewym bocznym pasku edytora przy linii z rozpoczęciem definicji metody

We właściwościach (klikamy prawym przyciskiem na ikonce punkty wstrzymań i wybieramy Breakpoints Properties) takich punktów wstrzymań możemy określić czy program ma się zatrzymać na wejściu i/lub wyjściu z metody:


Punkty wstrzymań pól

Jeśli zależy nam na zatrzymaniu wykonywania programu, gdy określone pole klasy jest wykorzystywane (odczytywane i/lub modyfikowane) to możemy wykorzystać punkty wstrzymań pól.

Tutaj również właściwości pozwalają nam dostosować zachowanie punktu wstrzymań do naszych potrzeb - możemy wybrać, czy ma on być aktywny przy odczycie i/lub modyfikacji danego pola:

Punkty wstrzymań klas

Tego rodzaju punktu wstrzymań możemy wykorzystać, gdy interesuje nas moment, w którym dana klasa jest po raz pierwszy ładowana przez maszynę wirtualną.

Punkty wstrzymań wyjątków

A co jeżeli w naszej aplikacji rzucany jest jakiś wyjątek i ciężko jest nam znaleźć miejsce i przyczynę takiej sytuacji? Wystarczy wtedy użyć punktów wstrzymań wyjątków. Wyjątki takie ustawia się w widoku Breakpoints (Window->Show View->Other->Debug->Breakpoints) - wybieramy opcję Add Java Exception Breakpoint:

i w nowym oknie wybieramy wyjątek, na który chcemy reagować:

Dodatkowo we właściwościach (w widoku Breakpoints klikamy prawym przyciskiem na danym wyjątku i wybieramy Breakpoint Properties) możemy wskazać, czy program ma się zatrzymać na wyjątkach "łapanych", "niełapanych", czy może na również na podklasach danego wyjątku:


W kolejnym poście spojrzymy jakie jeszcze możliwości dają nam punkty wstrzymań.

środa, 22 października 2008

Kurs podstawowy, część IV

Witam po dość długiej przerwie. Dzisiaj będzie krótko - IV część kursu podstawowego, mam jednak nadzieję, że wkrótce uda mi się napisać coś dłuższego (mam w planach wpis o wszechobecnych filtrach oraz o testowaniu wtyczek - macie jakieś preferencje co do kolejność?).
W dziejszym odcinku kursu mówię m.in. o:
- konfiguracjach uruchomienie
- kilku ciekawych skrótach (Ctrl+Shift+O, Ctrl+Shift+F, Ctrl+3)
- widok Tasks

Miłego oglądania życzę:

piątek, 12 września 2008

Kurs podstawowy, część III

Mam dla Was kolejną część cyklu dla początkujących. Co tym razem? Zaczynamy kodować, korzystamy z widoku Problems, rozwiązujemy pierwsze problemy, poznajemy skrót Ctrl+1, zobaczmy do czego służą wzorce kodu, korzystamy z refaktoryzacji:

środa, 27 sierpnia 2008

Ustawienia kompilatora dla projektów Javy.

Zwykle gdy nadzorujemy lub po prostu uczestniczymy w jakimś projekcie zależy nam na wysokiej jakości produktu końcowego, a co za tym idzie chcemy aby kod był napisany nie tylko poprawnie, ale też zgodnie z szeroko rozumianymi dobrymi praktykami. Co jednak zrobić, jeśli w naszym zespole są osoby, które uważają, że kod nie musi być piękny, ważne żeby robił to co do niego należy? Otóż, Eclipse może nam pomóc zdyscyplinować takie osoby i wymusić pewne dobre praktyki. Na czym ta pomoc polega? W łatwy sposób na poziomie całej przestrzeni pracy (ang. workspace) lub też na poziomie projektu możemy ustawić jaki kod kompilator ma uważać za błędny, o jakim ma ostrzegać, a co po prostu ignorować.
Załóżmy, że chcemy ustawić te opcje dla konkretnego projektu. W widoku Package Explorer klikamy prawym przyciskiem myszy na projekcie i wybieramy opcję Properties. Dalej wybieramy Java Compiler - >Errors / Warnings:
Zaznaczamy opcję Enable project specific settings, co pozwoli nam na dostosowanie ustawień wyłącznie dla wybranego przez nas projektu.
Po prawej stronie zobaczymy rozwijane kategorie kryjące różnorakie elementy, którym warto się przyjrzeć i skonfigurować według naszych preferencji. Na przykład jeśli nie chcemy aby programiści tworzyli metody o takiej samej nazwie jak konstruktor to ustawiamy wartość Method with a constructor name na Error, wówczas jeśli programista będzie chciał stworzyć taką metodę to kompilator mu na to nie pozwoli:
Możemy też np. uczulić programistę na różne konstrukcje - i tak jeśli zaznaczymy opcję Redundant null check, to jeśli kompilator wykryje niepotrzebne sprawdzanie wartości null to poinformuje o tym programistę ostrzeżeniem:
Myślę, że warto się przyjrzeć tym opcjom i dostosować je do swoich przyzwyczeń lub też standardów, aby nasz kod stawał się jak najlepszy, bo chyba nikt nie lubi później długimi godzinami zastanawiać się "Co ja wtedy miałem na myśli?", prawda?

Kopiowanie połączeń do repozytorium CVS

Zwykle, gdy pracowałem w nowej wersji Eclipse'a lub gdy pracowałem nad jakimiś błędami w starszych wersjach denerwowało mnie to, że za każdym razem muszę od nowa tworzyć połączenia do repozytoriów CVS'a. Ostatnio jednak odkryłem dość ciekawą funkcjonalność - kopiowanie połączeń do serwera CVS między instancjami Eclipse'a. W widoku CVS Repositories klikamy prawym przyciskiem na wybranym połączeniu i wybieramy Copy to Clipboard.


W drugiej instacji Eclipse'a w tym samym widoku klikamy prawym przysickiem i z menu kontekstowego wybieramy Paste Connection.


Prawda jakie to proste?

poniedziałek, 16 czerwca 2008

Co nowego nas czeka w Eclipse Ganymede 3.4?

Jak już pisałem wielkimi krokami zbliża się premiera Eclipse Ganymede, czyli wersji 3.4. Pora chyba przyjrzeć się, czego można się spodziewać, gdy ściągniemy już nową wersję tego środowiska. Poniższy wybór nowej funkcjonalności jest całkowicie subiektywny, więc czekam na Wasze propozycje i opinię w komentarzach.

Java IDE (projekt JDT)

  • Pojawił się mechanizm...okruchów (?), czyli po angielsku breadcrumb, który ułatwia nawigowanie po strukturze projektu. Jak zauważycie, gdy macie otwarty edytor Javy to na pasku narzędzi pojawia się taki oto przycisk:
    Po wciśnięciu tego przycisku do naszego edytora u góry zostaje dołożony mniej więcej taki pasek:
    Co ten pasek nam daje? Otóż po pierwsze pokazuje gdzie w strukturze projektu się znajdujemy. Po drugie bez korzystania z eksploratora projektów (ang. Package Explorer) możemy w prosty sposób przemieszczać się między elementami na różnych poziomach (projektu, folderu, pakietu, klasy oraz elementów klasy):
  • Opcja Search->Occurences in File (Ctrl + Shift + U) używa różnych kolorów do oznaczania operacji odczyty i zmiany wartości szukanej zmiennej:
  • W podobny sposób jak powyżej oznaczane są wyszukane elementy w edytorze Javy - opcja Mark Occurences (Alt + Shift + O). Kolory możemy zmienić w preferencjach General->Editors->Text Editors->Annotations.
  • Quick Assist (dostępny pod skrótem Ctrl+1) ma teraz dodatkowe podpowiedzi:
    • enkapsulacja pola:
    • wydzielenie metody
  • Podpowiedzi metod statycznych klas jeszcze niezaimportowanych:
  • Liczby mogą być teraz kolorowane tak jak nam się to podoba (preferencje Java->Editor->Syntax Coloring):
  • Ostrzeganie o używaniu null'a
  • W nieposortowanych widokach, np. w widoku Outline, możliwe jest przesuwanie elementów kodu (pól/metod), a zmiany te zostaną odzwierciedlone w strukturze kodu.
  • Jeśli macie komputery z wieloma procesorami, to powinniście zauważyć przyspieszenie czasu kompilacji.
Platform / Workbench
  • Dotychczasowy mechanizm aktualizacji oraz instalacji nowych wtyczek (czyli Update Manager) został wymieniony na mechanizm o nazwie P2. Nowe podejście dość znacznie różni się od tego co było wcześniej, więc jeszcze przed premierą Eclipse Ganymede w oddzielnym poście opisać zmiany i pokazać jak korzystać z P2.
  • Pełne wsparcie SWT dla Windowsa 64-bitowego
  • TextLayout oraz StyledText z SWT dają możliwość zmiany koloru przekreślenia oraz udostępniają rożne style podkreślenia
  • Nowe projekty mogą od razu podczas ich tworzenia być dodawane do Zbiorów Roboczych:
  • Ulepszone możliwości drukowania:
    • Drukowanie numerów linii
    • Nie drukuje się już tło
    • Każda strona wydruku ma w nagłówku nazwę pliku
    • W stopce pojawia się numer strony
  • Przy prezentacji wyniku wyszukiwania podawany jest numer linii
  • Mamy możliwość eksportu oraz importu konfiguracji uruchomienia (ang. launch configuration), dostępne przez menu File->Export->Run/Debug oraz File->Import->Run/Debug

  • Pojawił się nowy widok Markers, który agreguje informacje z widoków Problems, Tasks oraz Bookmarks.
  • Widoki można od teraz zamykać klikając na nagłówku środkowym klawiszem myszy.
  • Jeśli chcemy zaznaczyć wiele linii w edytorze tekstowym (nie tylko dla plików Java) możemy skorzystać z nowego mechanizmu: klikamy trzymając Shift na numerze linii od której chcemy zacząć zaznaczanie, następnie klikamy z Shiftem na numerze linii, na której chcemy skończyć zaznaczanie.
Rozwój wtyczek (projekt PDE)
  • Pojawiło się narzędzie o nazwie Plugin Spy. Pisałem już o tym jakiś czas temu, więc chyba nie ma potrzeby żebym się o tym rozpisywał.
  • Widok Plug-in Registry pozwala wykonywać dodatkowe operacje na wtyczkach, takie jak:
    • Start
    • Stop
    • Włącz (ang. Enable)
    • Wyłącz (ang. Disable)
  • Jacek Pospychala wprowadził świetne zmiany do widoku Error Log. Po pierwsze dodał możliwość filtrowania, a po drugie dodał grupowanie informacji według sesji:

  • W edytorze punktów rozszerzeń (ang. extension points) można teraz łatwo zmieniać ich nazwy

  • Pojawił się specjalny edytor do tworzenia pomocy kontekstowej:
  • W konfiguracji uruchomienia (ang. launch configuration) dla aplikacji Eclipse (ang. Eclipse application) na zakładce Plug-ins można teraz w łatwy sposób filtrować dostępne wtyczki:
  • Punkty rozszerzeń mogą być oznaczane jako wewnętrzne (ang. internal):
    Każdy kto będzie chciał z takiego punktu skorzystać zostanie ostrzeżony, że ten punkt rozszerzeń został oznaczony jako wewnętrzny.
Pewnie sporo ciekawych rzeczy przeoczyłem, więc jeśli chcecie zobaczyć wszystkie nowości to warto przejrzeć strony z nowinkami dla kolejnych kamieni milowych Eclipse Ganymede (chwilowo strony mogą nie działać):
Pełną listę zmian znajdziecie tutaj.

Zatem uwaga - Eclipse Ganymede nadchodzi!