| Termin | Definicja |
|---|---|
| Breakpoint | Breakpoint to punkt zatrzymania wykonania kodu wykorzystywany podczas debugowania makr w aplikacji biurowej. Breakpoint jako punkt zatrzymania makra VBABreakpoint, czyli punkt przerwania, to ustawione przez programistę miejsce w kodzie, w którym wykonanie makra zostaje tymczasowo zatrzymane podczas debugowania. W przypadku makr VBA uruchamianych w aplikacjach pakietu Microsoft Office zatrzymanie następuje przed wykonaniem wskazanej instrukcji. Edytor Visual Basic for Applications przechodzi wtedy w tryb przerwania, a programista może sprawdzić bieżący stan procedury, wartości zmiennych oraz kolejność wywołań funkcji. Breakpoint nie jest komunikatem o błędzie i sam w sobie nie oznacza uszkodzenia pliku ani aplikacji. Po zatrzymaniu kod nie jest wykonywany dalej, dopóki użytkownik nie wybierze odpowiedniej operacji debugowania. Można kontynuować działanie makra, przejść do kolejnej instrukcji albo zakończyć wykonywanie procedury. W oknie kodu aktualna linia jest zaznaczana przez edytor, dzięki czemu widać, przy której instrukcji zatrzymał się interpreter VBA. Taki mechanizm pozwala powiązać obserwowane zachowanie makra z konkretnym miejscem w kodzie, zamiast oceniać działanie programu wyłącznie na podstawie końcowego komunikatu lub nieprawidłowego wyniku. Ustawianie i działanie punktu przerwania w edytorze VBAPunkt przerwania można ustawić w konkretnej linii procedury VBA, umieszczając w niej kursor i wybierając polecenie przełączania breakpointu z menu debugowania. W edytorze Visual Basic używanym przez aplikacje Office często stosuje się również klawisz F9. Po ustawieniu punktu przy linii pojawia się oznaczenie wizualne, zwykle czerwone kółko lub czerwone podświetlenie. Ponowne użycie tego samego polecenia usuwa breakpoint. Punkty przerwania dotyczą instrukcji wykonywalnych, dlatego nie każda pusta linia, deklaracja komentarza lub etykieta może zatrzymać wykonanie w taki sam sposób jak instrukcja przypisania, wywołania procedury czy operacja na obiekcie. Gdy makro dojdzie do oznaczonego miejsca, edytor zatrzymuje wykonanie przed tą instrukcją. Można wtedy przeanalizować zmienne w oknie Locals, sprawdzić wyrażenia w oknie Immediate albo dodać obserwowane elementy w oknie Watch. W oknie Immediate możliwe jest między innymi odczytanie wartości zmiennej przez wpisanie zapytania poprzedzonego znakiem zapytania, o ile kod znajduje się w trybie przerwania. Dostępna jest także inspekcja obiektów używanych przez makro, takich jak skoroszyt, arkusz, zakres komórek czy kolekcja dokumentów. Trzeba jednak pamiętać, że odczyt lub zmiana właściwości obiektu w trakcie debugowania może wpływać na dalsze działanie procedury. Po zatrzymaniu makra polecenie kontynuowania powoduje dalsze wykonywanie kodu aż do następnego breakpointu, wystąpienia błędu lub zakończenia procedury. Polecenia przechodzenia krokowego umożliwiają wykonywanie instrukcji pojedynczo. W praktyce pozwala to sprawdzić, czy wartość zmiennej zmieniła się zgodnie z założeniem, czy warunek został spełniony oraz czy procedura przekazała prawidłowe argumenty do kolejnego wywołania. W przypadku kodu zawierającego pętlę breakpoint może zatrzymywać makro wielokrotnie, dlatego często warto umieścić go dopiero za warunkiem lub tymczasowo usunąć po zbadaniu pierwszego przebiegu. Breakpoint a analiza przepływu danych i błędów makraPunkt przerwania jest szczególnie przydatny wtedy, gdy makro kończy się bez błędu wykonania, lecz zapisuje nieprawidłowe dane. Przykładowo procedura może pobierać wartości z komórek, przekształcać je i wpisywać do innego zakresu. Breakpoint ustawiony przed przypisaniem wyniku pozwala porównać wartość źródłową, zawartość zmiennej po konwersji oraz adres docelowej komórki. Jeżeli problem pojawia się tylko dla pustych komórek, tekstu zamiast liczby albo daty zapisanej w innym formacie, zatrzymanie w odpowiedniej iteracji pętli ułatwia ustalenie, jaki typ danych faktycznie otrzymała procedura. Breakpoint pomaga również rozróżnić błąd warunku od błędu kolejności operacji. Przy instrukcji Ważne jest odróżnienie breakpointu od instrukcji Praktyczne sprawdzenie makra zatrzymanego na BreakpointDiagnostykę należy rozpocząć od odtworzenia problemu z otwartym edytorem VBA i ustawienia breakpointu w miejscu, gdzie dane są pobierane, przetwarzane albo zapisywane. Warto wybierać linię blisko pierwszego podejrzanego przekształcenia, a nie wyłącznie końcową instrukcję procedury. Po zatrzymaniu trzeba sprawdzić wartości zmiennych, aktywny arkusz lub dokument oraz zakresy używane przez kod. Jeżeli makro pracuje w pętli, należy zweryfikować także licznik iteracji, aby ustalić, dla którego rekordu występuje odchylenie. Następnie można wykonywać kod krokowo i obserwować moment, w którym wynik przestaje odpowiadać oczekiwaniom. Przed wznowieniem działania warto zapisać istotne obserwacje, ponieważ kolejne instrukcje mogą zmienić wartości zmiennych albo zawartość arkusza. Po zakończeniu testu należy usunąć tymczasowe breakpointy, wyłączyć tryb przerwania i ponownie uruchomić makro w kontrolowanych warunkach. Jeżeli edytor zatrzymuje kod przed instrukcją, która sama nie wygląda na wadliwą, przyczyną może być wcześniejsza zmiana danych, nieprawidłowy argument procedury lub błędny stan obiektu Office. Sprawdzenie kilku kolejnych punktów przerwania pozwala prześledzić pełny przepływ wartości od źródła do miejsca zapisu, bez zgadywania na podstawie samego komunikatu końcowego. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w przypadku problemów z makrami można przekazać do analizy informacje o używanej aplikacji Office, nazwie procedury, miejscu zatrzymania oraz obserwowanych wartościach. Takie dane pomagają odróżnić problem z kodem VBA od problemu z plikiem, konfiguracją aplikacji lub środowiskiem systemowym. |