Debugowanie aplikacji platformy Xamarin.iOS
Aplikacje platformy Xamarin.iOS można debugować za pomocą wbudowanego debugera w Visual Studio dla komputerów Mac lub Visual Studio.
Użyj natywnej obsługi debugowania Visual Studio dla komputerów Mac do debugowania kodu w języku C# i innych języków zarządzanych oraz używania usługi LLDB, gdy konieczne jest debugowanie kodu C, C++ lub Objective C, które można połączyć z projektem platformy Xamarin.iOS.
Uwaga
Podczas kompilowania aplikacji w trybie debugowania platforma Xamarin.iOS będzie generować wolniejsze i znacznie większe aplikacje, ponieważ każdy wiersz kodu musi być instrumentowany. Przed wydaniem upewnij się, że masz kompilację wydania.
Debuger platformy Xamarin.iOS jest zintegrowany ze środowiskiem IDE i umożliwia deweloperom debugowanie aplikacji platformy Xamarin.iOS utworzonych przy użyciu dowolnego z języków zarządzanych obsługiwanych przez platformę Xamarin.iOS w symulatorze i na urządzeniu.
Debuger platformy Xamarin.iOS używa debugera Mono Soft Debugger, co oznacza, że wygenerowany kod i środowisko uruchomieniowe Mono współpracują ze środowiskiem IDE w celu zapewnienia środowiska debugowania. Różni się to od twardych debugerów, takich jak LLDB lub MDB, które kontrolują program bez wiedzy lub współpracy z debugowanego programu.
Ustawianie punktów przerwania
Gdy wszystko będzie gotowe do rozpoczęcia debugowania aplikacji, pierwszym krokiem jest ustawienie punktów przerwania aplikacji. Można to zrobić, klikając obszar marginesu edytora obok numeru wiersza kodu, który chcesz przerwać:
Możesz wyświetlić wszystkie punkty przerwania ustawione w kodzie, przechodząc do okienka Punkty przerwania:
Jeśli okienko punktów przerwania nie jest wyświetlane automatycznie, możesz je wyświetlić, wybierając pozycję Wyświetl > debugowanie punktów przerwania systemu Windows >
Przed rozpoczęciem debugowania dowolnej aplikacji zawsze upewnij się, że konfiguracja jest ustawiona na Debugowanie, ponieważ zawiera on przydatny zestaw narzędzi do obsługi debugowania, takich jak punkty przerwania, używanie wizualizatorów danych i wyświetlanie stosu wywołań:
Rozpocznij debugowanie
Aby rozpocząć debugowanie, wybierz urządzenie docelowe lub podobne w środowisku IDE:
Następnie wdróż aplikację , naciskając przycisk Odtwórz .
Po osiągnięciu punktu przerwania kod zostanie wyróżniony żółtym:
Narzędzia debugowania, takie jak inspekcja wartości obiektów, mogą być używane w tym momencie, aby uzyskać więcej informacji na temat tego, co dzieje się w kodzie:
Warunkowe punkty przerwania
Można również ustawić reguły dyktujące okoliczności, w których powinien wystąpić punkt przerwania, jest to znane jako dodawanie warunkowego punktu przerwania.
Aby ustawić warunkowy punkt przerwania, uzyskaj dostęp do okno Właściwości punktu przerwania, który można wykonać na dwa sposoby:
Aby dodać nowy warunkowy punkt przerwania, kliknij prawym przyciskiem myszy margines edytora, po lewej stronie numeru wiersza kodu, dla którego chcesz ustawić punkt przerwania, a następnie wybierz pozycję Nowy punkt przerwania:
Aby dodać warunek do istniejącego punktu przerwania, kliknij prawym przyciskiem myszy punkt przerwania i wybierz pozycję Właściwości punktu przerwania lub w okienkupunktów przerwania wybierz przycisk właściwości pokazany poniżej:
Następnie możesz wprowadzić warunek, w którym ma wystąpić punkt przerwania:
Nawigowanie po kodzie
Po osiągnięciu punktu przerwania narzędzia debugowania umożliwiają uzyskanie kontroli nad wykonywaniem programu. W środowisku IDE będą wyświetlane cztery przyciski, które umożliwiają uruchamianie i przechodzenie przez kod.
W Visual Studio dla komputerów Mac będą wyglądać następująco:
Są to:
- Odtwórz/zatrzymaj — spowoduje to rozpoczęcie/zatrzymanie wykonywania kodu do następnego punktu przerwania.
- Krok w kroku — spowoduje to wykonanie następnego wiersza kodu. Jeśli następny wiersz jest wywołaniem funkcji, krok po wykonaniu funkcji zostanie zatrzymany w następnym wierszu kodu.
- Krok do — spowoduje to również wykonanie następnego wiersza kodu. Jeśli następny wiersz jest wywołaniem funkcji, funkcja Step Into zostanie zatrzymana w pierwszym wierszu funkcji, co umożliwi kontynuowanie debugowania wiersza po wierszu funkcji. Jeśli następny wiersz nie jest funkcją, będzie zachowywać się tak samo jak krok w kroku.
- Step Out — spowoduje to powrót do wiersza, w którym została wywołana bieżąca funkcja.
Punkty przerwania
Należy podkreślić, że system iOS udostępnia aplikacjom tylko kilka sekund (10) do uruchomienia i ukończenie FinishedLaunching
metody w delegatu aplikacji. Jeśli aplikacja nie ukończy tej metody w ciągu 10 sekund, system iOS zabije proces.
Oznacza to, że nie można ustawić punktów przerwania w kodzie uruchamiania programu. Jeśli chcesz debugować kod uruchamiania, należy opóźnić część jego inicjowania i umieścić go w metodzie wywoływanej czasomierzem lub w innej formie metody wywołania zwrotnego wykonywanej po zakończeniu zakończenia.
Diagnostyka urządzenia
Jeśli wystąpi błąd podczas konfigurowania debugera, możesz włączyć szczegółową diagnostykę, dodając "-v -v -v -v" do dodatkowych argumentów mtouch w opcjach projektu. Spowoduje to wyświetlenie szczegółowych informacji o błędzie w konsoli urządzenia.
Debugowanie bezprzewodowe
Ustawieniem domyślnym w środowisku Xamarin.iOS jest debugowanie aplikacji na urządzeniach za pośrednictwem połączenia USB. Czasami urządzenie USB może być konieczne do przetestowania podłączania/odłączania kabla do tworzenia aplikacji zasilanych przez funkcję ExternalAccessory. W takich przypadkach można użyć debugowania za pośrednictwem sieci bezprzewodowej.
Aby uzyskać więcej informacji na temat wdrażania bezprzewodowego i debugowania, zapoznaj się z przewodnikiem wdrażania bezprzewodowego.
Szczegóły techniczne
Platforma Xamarin.iOS używa nowego debugera nietrwałego Mono. W przeciwieństwie do standardowego debugera Mono, który jest programem sterującym oddzielnym procesem przy użyciu interfejsów systemu operacyjnego w celu sterowania oddzielnym procesem, debuger nietrwały działa, ponieważ środowisko uruchomieniowe Mono uwidacznia funkcje debugowania za pośrednictwem protokołu przewodowego.
Podczas uruchamiania aplikacja, która ma być debugowana, kontaktuje się z debugerem, a debuger zaczyna działać. W programie Xamarin.iOS dla programu Visual Studio agent Xamarin dla komputerów Mac działa jako środek między aplikacją (w programie Visual Studio) i debugerem.
Ten nietrwały debuger wymaga schematu debugowania współpracy podczas uruchamiania na urządzeniu. Oznacza to, że kompilacje binarne podczas debugowania będą większe, ponieważ kod jest instrumentowany w celu przechowywania dodatkowego kodu w każdym punkcie sekwencji w celu obsługi debugowania.
Uzyskiwanie dostępu do konsoli
Dzienniki awarii i dane wyjściowe klasy Console zostaną wysłane do konsoli i Telefon. Dostęp do tej konsoli można uzyskać za pomocą programu Xcode przy użyciu "Organizatora" i wybrania urządzenia z organizatora.
Alternatywnie, jeśli nie chcesz uruchamiać programu Xcode, możesz użyć narzędzia i Telefon Configuration Utility firmy Apple, aby uzyskać bezpośredni dostęp do konsoli. Ma to dodatkowy bonus, który można uzyskać dostęp do dzienników konsoli z komputera z systemem Windows, jeśli debugujesz problem w polu.
W przypadku użytkowników programu Visual Studio dostępnych jest kilka dzienników w oknie Dane wyjściowe, ale należy przełączyć się na komputer Mac, aby uzyskać bardziej szczegółowe i szczegółowe dzienniki.
Debugowanie bibliotek klas Mono
Platforma Xamarin.iOS jest dostarczana z kodem źródłowym bibliotek klas mono i można jej użyć do pojedynczego kroku z debugera, aby zobaczyć, jak działają elementy pod maską.
Ponieważ ta funkcja zużywa więcej pamięci podczas debugowania, jest ona domyślnie wyłączona.
Aby włączyć tę funkcję, upewnij się, że opcja Debuguj tylko kod projektu; nie należy wprowadzać kroków w kodzie struktury jest zaznaczona w menu debugera preferencji > Visual Studio dla komputerów Mac>, jak pokazano poniżej:
Gdy to zrobisz, możesz uruchomić aplikację i jeden krok do dowolnych podstawowych bibliotek klas mono.