---
title: Debugowanie aplikacji mobilnych
date: 2020-08-05
categories:
  - app-development
  - mobile-development
  - mobiletogether
  - tools
tags:
  - app-development
  - mobile-app-debugging
  - mobile-development-tools
  - mobiletogether
description: Programiści potrzebują narzędzi do debugowania aplikacji mobilnych, aby zrozumieć i rozwiązywać problemy związane z ich działaniem. MobileTogether oferuje kompleksowe narzędzia do debugowania przebiegu działania aplikacji.
---
Status: #blog

Tags:  #app-development #mobile-app-debugging #mobile-development-tools #mobiletogether

Categories: [mobile-development](/blog/pl/category/mobile-development.md) 
# Debugowanie aplikacji mobilnych

MobileTogether to narzędzie do tworzenia zaawansowanych, eleganckich rozwiązań działających na różnych platformach. Programiści potrzebują narzędzi do debugowania aplikacji mobilnych, aby rozwiązywać problemy podczas tworzenia i zrozumieć sposób działania aplikacji. Narzędzie MobileTogether Designer oferuje kompleksowe debugowanie procesu działania aplikacji wewnątrz struktur drzew decyzyjnych i [Debugowanie funkcji XPath/XQuery](/blog/pl/2021/03/developing-and-debugging-user-functions-in-mobile-apps.md). Te funkcje są dostępne w dwóch widokach debugowania aplikacji mobilnych, zintegrowanych w jednym narzędziu.

Widok debugera akcji umożliwia programistom debugowanie akcji związanych z zdarzeniami kontrolki lub zdarzeniami strony. Ten widok jest dostępny, gdy podczas przetwarzania napotkamy akcję, która została wybrana do debugowania. Widok debugera XPath otwiera okno evaluatora XPath/XQuery, umożliwiając szczegółowe śledzenie i debugowanie wyrażeń.

Programiści mogą ustawiać punkty przerwania w różnych miejscach kodu, a następnie wykonywać program krok po kroku, zatrzymując się w dowolnym momencie, aby móc zbadać całe środowisko wykonawcze.

Zobaczmy, jak wygląda debugowanie aplikacji mobilnych w praktyce:

![](/blog/images/MT-debugger-lead.jpg)

<!--more-->

W wcześniejszym wpisie na temat [technik programowania dla rozwoju aplikacji mobilnych](https://www.altova.com/blog/programming-techniques-for-mobile-development/), wykorzystaliśmy aplikację monitorującą jakość powietrza, aby zilustrować podprogram w aplikacji mobilnej. Ten podprogram, zaimplementowany jako grupa akcji MobileTogether, obliczał lokalną godzinę odczytu jakości powietrza na podstawie danych zwróconych przez interfejs API, które zawierały czas w formacie GMT oraz wartość korekty. Możemy debugować ten podprogram, aby upewnić się, że nasze obliczenia są poprawne.

Najpierw ustawimy punkt przerwania na początku grupy akcji związanej z lokalnym czasem w Calc, aby wstrzymać wykonanie w momencie wywołania podprogramu:

[![Ustawianie punktu przerwania do debugowania aplikacji mobilnej](/blog/images/set-break.png)](set-break.png)

Można dodać dowolną liczbę punktów przerwania, a nie trzeba się martwić o ich późniejsze odnajdywanie. Są one zarządzane z głównego menu debugowania:

[![Opcje dostępne w głównym menu debugowania](/blog/images/debug-menu-1.png)](debug-menu-1.png)

Użyliśmy również menu, aby ustawić opcję "Zatrzymaj przy następnym punkcie przerwania". Teraz możemy uruchomić naszą aplikację w symulatorze, a ona będzie działać normalnie, aż do momentu wywołania grupy akcji "Calc local time".

Poniższy obrazek przedstawia ekran symulatora w momencie, gdy aplikacja zatrzymała się w punkcie przerwania. Użytkownik wybrał raport dla miasta Londyn, aplikacja wykonała wywołanie do API, a teraz próbuje obliczyć lokalną godzinę na podstawie otrzymanych danych:

[![Widok debugowania, gdy wykonanie programu zostaje zatrzymane w punkcie przerwania](/blog/images/stop-at-break.png)](stop-at-break.png)

Po lewej stronie ekranu znajdują się dwa panele debugera. Na górze widzimy listę operacji, które mają zostać wykonane, z czerwonym punktem przerwania i zieloną strzałką oznaczającą aktualny krok. W panelu poniżej wyświetlana jest lista wywołań funkcji prowadzących do aktualnej grupy operacji.

Przyciski "+" w oknie wyświetlającym stos wywołań pokazują wartości parametrów przekazanych podczas wywołania grupy akcji. Możemy kliknąć przycisk "Wejście do akcji" na górze, aby kontynuować wykonanie krok po kroku:

[![Wyświetlanie parametrów przekazywanych do podprogramu](/blog/images/step-1.png)](step-1.png)

Poczekajcie chwilę, czy Londyn nie znajduje się w tej samej strefie czasowej co Greenwich w Wielkiej Brytanii i czy nie powinien być ustawiony zgodnie z czasem uniwersalnym (GMT), bez potrzeby korekty? Zapytałem wszystkie moje inteligentne asystenty i wszystkie wyszukiwarki – wszystkie potwierdziły, że zarówno Londyn, jak i Greenwich stosują letni czas brytyjski (British Summer Time), który jest o godzinę do przodu w stosunku do czasu uniwersalnego (GMT).

W każdym razie, to są dane, które otrzymaliśmy od API, więc możemy kontynuować. Przechodząc przez kolejne elementy, docieramy do pierwszej akcji "Aktualizacja węzła":

[![Pierwsza akcja wykonywana przez podprogram](/blog/images/step-2.png)](step-2.png)

Węzeł `localDateTime` jest ustawiany na wartość parametru `$time`.

Kolejny krok:

[![Modyfikacja ciągu znaków reprezentującego datę i czas](/blog/images/step-3.png)](step-3.png)

Litera "T" jest wstawiana pomiędzy datę a godzinę, aby dopasować składnię wymaganą przez funkcję `add-hours-to-dateTime()`.

Kolejny krok:

[![Dodaj godziny z korekty](/blog/images/step-4.png)](step-4.png)

Dodano godziny wyrównawcze.

Kolejny krok:

[![Sprawdź, czy potrzebna jest korekta czasu](/blog/images/step-5.png)](step-5.png)

Czy są jakieś korekty do wprowadzenia? Nie.

Kolejny krok:

[![Usuń literę "T" z daty i godziny](/blog/images/step-6.png)](step-6.png)

Zastąp literę "T" spacją.

Kolejny krok:

[![Osiągnięto koniec podprogramu](/blog/images/step-7.png)](step-7.png)

Linia komentarza oznacza koniec grupy akcji. Teraz możemy użyć zielonego przycisku "Uruchom" na górze, aby kontynuować normalne działanie aplikacji. Otwiera się podstrona, która wyświetla wskaźnik jakości powietrza:

[![Widok podstrony zawierającej raport dotyczący jakości powietrza](/blog/images/step-8.png)](step-8.png)

W związku z tym, narzędzie do debugowania aplikacji mobilnej, które wyświetlało sekwencję akcji, potwierdziło, że nasza logika była prawidłowa.

Jednak zapisywanie wyników pośrednich na każdym etapie jest dość uciążliwe i zbędne. Powinniśmy połączyć te kroki w jedno wyrażenie:

[![Wykonanie korekty daty i godziny w jednym kroku
](/blog/images/new-action-group.png)](new-action-group.png)

Trzy oryginalne akcje zostały wyłączone i zastąpione jedną akcją, która zawiera złożone wyrażenie. Możemy użyć widoku debugera XPath, aby przetestować to wyrażenie.

Mogliśmy płynnie przełączać się między różnymi widokami, ale przerwaliśmy pierwszą sesję debugowania, aby edytować wyrażenie. Teraz uruchomimy tę nową wersję w symulatorze. Tym razem, gdy program zatrzyma się w punkcie przerwania, użyjemy przycisku "Wejście do XPath", aby rozpocząć debugowanie aplikacji mobilnej w widoku debugera XPath/XQuery:

[![Debugowanie aplikacji mobilnych w widoku wyrażeń](/blog/images/step-xpath1.png)](step-xpath1.png)

Otwiera się okno interpretera wyrażeń XPath/XQuery, a debugger rozpoczyna proces analizy wyrażenia:

[![Ocena wyrażenia podczas debugowania aplikacji mobilnej](/blog/images/step-xpath2.png)](step-xpath2.png)

Teraz użyjemy przycisku "Przejdź do" w oknie XPath, aby kontynuować analizę wyrażenia:

![Ocena wyrażenia, zaczynając od jego wewnętrznej struktury](/blog/images/step-xpath3.png)

Pola znajdujące się w dolnej części obrazu wskazują zawartość parametrów przekazanych podczas wywołania grupy akcji. Źródłem zmiennej "$time" był element JSON o nazwie "s", który zawierał dane tekstowe zwrócone przez interfejs API.

Kolejny krok:

[![Przygotowanie ciągu znaków do użycia w funkcji add-dateTime()](/blog/images/step-xpath4.png)](step-xpath4.png)

Wewnątrz wyrażenia, zmienna T musi nadal przestrzegać zasad składni funkcji `add-hours-to dateTime()`.

Kolejny krok:

![](/blog/images/step-xpath5-1.png)

Teraz naprawdę weszliśmy w sedno i zakończyliśmy proces. W tym przypadku, początkowa wartość parametru `$time` wynosiła 2020-08-03 07:00:00, a wartość parametru `$adj` użytego do korekty wynosiła -07:00. W tym momencie nasz wynik to 2020-08-03T00:00:00.

Następnym krokiem będzie test, który sprawdzi, czy konieczna jest korekta dotycząca minut. Parametr "adj" kończy się na "00", więc ten test zakończy się niepowodzeniem. W takim przypadku zostanie zastąpiony inny element, a zostanie wyświetlona podstrona:

[![Prezentacja nowego raportu dotyczącego jakości powietrza](/blog/images/san-fran-aqi.png)](san-fran-aqi.png)

Jeśli zajmujecie się tworzeniem aplikacji na różne platformy, potrzebujecie narzędzia umożliwiającego debugowanie aplikacji mobilnych. Zapraszamy do zapoznania się z naszym produktem MobileTogether [Prezentacje wideo](https://www.altova.com/pl/mobiletogether/demos#video_Demos), więcej [Przykładowe aplikacje](https://www.altova.com/pl/mobiletogether/demos), lub nawet [instrukcja online](https://www.altova.com/manual/MobileTogether/mobiletogetherdesigner/) aby uzyskać szczegółowe informacje. Kiedy będziecie gotowi, aby szybko rozpocząć tworzenie własnych aplikacji mobilnych działających na różnych platformach, [Pobierz program MobileTogether Designer](https://www.altova.com/pl/mobiletogether/download) aby zacząć.
