Programowanie Systemów Wbudowanych

Podobne dokumenty
Tworzenie oprogramowania

Programowanie w Javie

Uruchomienie Raspberry Pi

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 7. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Programowanie Systemów Czasu Rzeczywistego

1.Wstęp. 2.Generowanie systemu w EDK

Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }

Materiały dodatkowe. Simulink Real-Time

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

C++ - [1-3] Debugowanie w Qt Creator

PROGRAM DO ARCHIWIZACJI NOŚNIKÓW KOPII ELEKTRONICZNEJ

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Tworzenie maszyny wirtualnej

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Programowanie procesora Microblaze w środowisku SDK

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

PRACA W ZINTEGROWANYM ŚRODOWISKU URUCHOMIENIOWYM - IDE Keil μvision 2

Instrukcja Programator/Debugger Jtag Telwis

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

MATERIAŁY DO ZAJĘĆ I. Podstawowe pojęcia. Algorytm. Spis treści Przepis

Laboratorium 1. I. Zainstaluj program Eclipse (wersja C/C++ w odpowiednim systemie operacyjnym

Programowanie w asemblerze Linkowanie

Q E M U.

Instrukcja korzystania z Virtual Box-a i SQLPLUS-a

Niech wynik od 0 do 200F wyświetla w trzech kolumnach: F = (wartość) C = (wyliczona wartość) K = (wyliczona wartość)

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Wprowadzenie do środowiska Qt Creator

Uruchomienie Intel Galileo

Konfiguracja pakietu CrossStudio for MSP

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

X P.I.W.O. Portowanie Tizena na nowe architektury na przykładzie ARMv6. Maciej Wereski Samsung R&D Institute Poland. 17 Maj Poznań, Polska

Laboratorium Procesorów Sygnałowych

Środowisko Keil. Spis treści. Krzysztof Świentek. Systemy wbudowane. 1 Trochę teorii. 2 Keil

1 Moduł Inteligentnego Głośnika

Instrukcja pomocnicza

1 Moduł Inteligentnego Głośnika 3

Electronic Infosystems

Materiały dodatkowe. Simulink PLC Coder

Programowanie niskopoziomowe

Materiały dodatkowe. Raspberry Pi

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

Kod produktu: MP-W7100A-RS485

Konfiguracja serwera OPC/DDE KEPSServerEX oraz środowiska Wonderware InTouch jako klienta DDE do wymiany danych

Zdalna obsługa transcievera. H A M R A D I O D E L U X E R e m o t e S e r v e r C o n f i g u r a t i o n

Programowanie obiektowe zastosowanie języka Java SE

Rozdział 1. Informacje ogólne

Procesy pojęcia podstawowe. 1.1 Jak kod źródłowy przekształca się w proces

Kompilacja i scalanie programów w linii poleceń gcc i make

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

1. Tworzenie nowego projektu.

WPROWADZENIE DO INFORMATYKI

Systemy Operacyjne - Operacje na plikach

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Sieci komputerowe. Tadeusz Kobus, Maciej Kokociński Instytut Informatyki, Politechnika Poznańska

Systemy wbudowane. Rysunek 1: Ilustracja procesu kompilacji oprogramowania

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Spis treści. Wstęp... 10

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

SQL Server Analysis Services Procedury składowane. Grzegorz Stolecki

Narzędzia do diagnozowania sieci w systemie Windows

Przesyłania danych przez protokół TCP/IP

Instalacja NOD32 Remote Administrator

Code Composer Studio v4 (3)

MikloBit ul. Cyprysowa 7/ Jaworzno. JTAG + ISP dla AVR. rev

MentorGraphics ModelSim

Fragment wykładu z języka C ( )

Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Wykaz zmian w programie SysLoger

1 Moduł Diagnostyki Sieci

ZADANIE.02 Podstawy konfiguracji (interfejsy) Zarządzanie konfiguracjami 1,5h

Java Podstawy. Michał Bereta

Instrukcja konfiguracji funkcji skanowania

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

LABORATORIUM SIECI KOMPUTEROWYCH (compnet.et.put.poznan.pl)

Sprawozdanie. (notatki) Sieci komputerowe i bazy danych. Laboratorium nr.3 Temat: Zastosowanie protokołów przesyłania plików

T: Konfiguracja interfejsu sieciowego. Odwzorowanie nazwy na adres.

Moduł Ethernetowy. instrukcja obsługi. Spis treści

Artykuł : Aktualizacja ( Cscape 9.70 )

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 1. Krzysztof Lichota

INSTRUKCJA OBSŁUGI PROGRAMU INSTAR 1.0

Spis treści JĘZYK C - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Konwerter RS-485->Ethernet [TCP/IP] CN-ETH-485 INSTRUKCJA [konfiguracja urządzenia do współpracy z programem MeternetPRO]

Podgląd z rejestratorów IPOX na komputerze z systemem WINDOWS za pomocą programu NVMS-2.0 LITE

procertum CLIDE Client 2.1 wersja 1.0.2

Konfiguracja trybu pracy Real COM dla serwerów NPort:

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

Delphi podstawy programowania. Środowisko Delphi

Konfiguracja współpracy urządzeń mobilnych (bonowników).

Transkrypt:

Programowanie Systemów Wbudowanych Debugowanie z GDB Iwona Kochańska Gdansk University of Technology

GNU debugger Identyfikacja i naprawianie błędów to część procesu wytwarzania oprogramowania Techniki wykrywania błędów analiza statyczna analiza dynamiczna static analysis inspekcja kodu (code review) tracing, profiling, interaktywne debugoweanie GNU debugger (GDB) - narzędzie do debugowania aplikacji i kodu jadra pracuje na poziomie kodu (głównie C i C++) strona projektu: http://www.gnu.org/software/gdb GUT Intel 2015/16 2/19

Przygotowanie do debugowania Kod powinien być skompilowany wraz z symbolami dla debuggera (debug symbols). Opcje GCC: -g: generuje informację w formacie odpowiednim dla maszyny docelowej -ggdb - generuje informację właściwa dla konkretnego GDB (w przypadku OS Linux różnica jest prawie żadna) Obydwie opcje umożliwiaja wybór poziomu debugowania (level of debug information): 0: brak infromacji dla debuggera 1: informacja o nazwach funkcji i zmiennych zewnętrznych (external variables); to wystarczajaca informacja dla wygenerowania back trace 2: (domyślnie) informacja o zmiennych lokalnych i numerach linii - możliwe debugowanie na poziomie kodu 3: najwyższy poziom GUT Intel 2015/16 3/19

Przygotowanie do debugowania Level of debug information W większości przypadków wystarcza -g (-g2) -g3 lub -ggdb3 - kiedy pojawia się problem z przejściem przez kod krok po kroku Mechanizm optymalizacji kompilacji przeszkadza w debugowaniu, bo psuje powiazania między kodem źródłowym a kodem maszynowym poziom optymalizacji kodu: brak, -O1, -O2, -O3, -OS (opt. ze względu na rozmiar) Dwa sposoby korzystania z GDB: natywnie - jeśil kod jest kompilowany i uruchamiany na tej samej maszynie w środowisku skrośnym - większość przypadków systemów wbudowanych GUT Intel 2015/16 4/19

Zdalne debugowanie - gdbserver gdbserver - program uruchamiany na maszynie docelowej, kontrolujacy wykonanie debugowanego programu łaczy się z kopia GDB na maszynie hosta przez interfejs Ethernet lub szeregowy GUT Intel 2015/16 5/19

Zdalne debugowanie - gdbserver Sesja debuggera rozpoczyna się od załadowania programu-aplikacji na maszynę docelowa (target) Niezależnie trzeba załadować GDB z cross toolchain na maszynie hosta GDB i gdbserver musza się ze soba komunikować GDB (host) musi wiedzieć, gdzie należy szukać symboli debugger i kodu źródłowego aplikacji i bibliotek współdzielonych Symbole debugger i kod źródłowy nie musza być obecne na maszynie docelowej (brak miejsca!) Istniej a pewne różnice między GDB/gdbserver a natywnym GDB - nie ma możliwości śledzenia procesów potomnych (po wywołaniu fork()) przez gdbserver GUT Intel 2015/16 6/19

Zdalne debugowanie - gdbserver GDB i gdb server powinny być: tej samej wersji, skonfigurowane tak samo, najlepiej zbudowane z tych samych źródeł. Symole debuggera zwiększaja rozmiar pliku wykonywalnego (nawet 10X!) Usunięcie symboli bez ponownej kompilacji - narzędzie strip Opcje: strip-all: (default) usuwa wszystkie symbole; OK dla aplikacji i bibliotek współdzielonych strip-unneeded: usuwa symbole niepotrzebne przy relokacji OK dla modułów jadra GUT Intel 2015/16 7/19

Przygotowanie w build system Yocto Project Buildroot dodaj do conf/local.conf: IMAGE_INSTALL_append = " gdbserver" BR2_PACKAGE_HOST_GDB w menu Toolchain Build cross gdb for the host BR2_PACKAGE_GDB w menu Target packages Debugging, profiling and benchmark gdb BR2_PACKAGE_GDB_SERVER w menu Target packages Debugging, profiling and benchmark gdbserver GUT Intel 2015/16 8/19

Rozpoczęcie debuggowania gdbserver zainstalowany na maszynie docelowej i cross-gdb zainstalowany na maszynie hosta Połaczenie GDB z gdbserver przez sieć [target] uruchom gdbserver z numerem portu TCP (na którym ma słuchać) i opcjonalnie adresem IP, skad nadejdzie żadanie połaczenia GUT Intel 2015/16 9/19

Rozpoczęcie debuggowania Przykład: gdbserver czeka na porcie 10000 na żadanie od kogokolwiek [host] Uruhom kopię GDB z toolchain-a, podajac jako argument debugowany program (GDB musi załadować tablicę symboli) [host] w GDB: polecenie target remote by ustanowić połaczenie z maszyna docelowa (podaje się nr IP lub nazwę hosta oraz port) [host] gdbserver nawiazuje połaczenie z hostem GUT Intel 2015/16 10/19

Rozpoczęcie debuggowania Połaczenie GDB i gdbserver przez interfejs szeregowy [target] uruchom gdbserver podajac nazwę portu szeregowego: [target] ustaw szybkość transmisji [host] GDB z komenda target remote i nazwa urzadzenia szeregowego hosta GUT Intel 2015/16 11/19

Rozpoczęcie debuggowania Ustawienie ścieżki roota (sysroot) GDB musi wiedzieć, gdzie znaleźć symbole debuggera i kod źródłowy dla bibliotek współdzielonych Debuggowanie natywne - nie ma problemu, ścieżki sa znane Debuggowanie skrośne - trzeba ustawić ścieżkę roota (sysroot) (gdb) set sysroot ~/<unpacked_image Plik poleceń GDB. GDB czyta komendy z: $HOME/.gdbinit.gdbinit w bieżacej ścieżce (problemy w nowszych wersjach GDB) plików podanych w linii poleceń po opcji -x GUT Intel 2015/16 12/19

GDB - komendy Breakpoints GUT Intel 2015/16 13/19

GDB - komendy Running and stepping GUT Intel 2015/16 14/19

GDB - komendy Information GUT Intel 2015/16 15/19

GDB - przejście do pułapki (breakpoint) [target] gdbserver ładuje program do pamięci i ustawia pułapkę (breakpoint) na pierwszej instrukcji. Następnie czeka na GDB. [target] po ustanowieniu połaczenia z GDB rozpoczyna sesję debugowania [target] po wykonaniu pierwszego kroku: program zawiesza działania na kodzie odpowiedzialnym za środowisko runtime C/C++ należy ustawić pułapkę za funkcji main()! I wówczas: continue (c) Jesli w tym miejscu pojawiaja się problemy, prawie na pewno nie jest ustawiona ścieżka roota (sysroot) GUT Intel 2015/16 16/19

GDB Terminal user interface Okno kodu, pokazujace linie w sasiedztwie linii wykonywanej (wraz z pułapkami/breakpoints) Tryb tekstowy Można używać go w terminalu ssh (gdy GDB działa natywnie na maszynie docelowej) Uruchomienie: GDB z opcja -tui GUT Intel 2015/16 17/19

GDB - Data display debugger Data display debugger (DDD) - prosty interfejs graficzny dla GDB Opcja debugger - informacja dla DDD o użyciu GDB z toolchain-a Argument -x: plik poleceń GDB GUT Intel 2015/16 18/19

GDB - Eclipse Eclipse C development toolkit (CDT) plug-in - wspiera debugowanie z GDB, również debuggowanie zdalne GUT Intel 2015/16 19/19