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

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

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

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

Visual Basic Debugging and Error Handling

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Programowanie Systemów Wbudowanych

Programowanie w Javie

Programowanie Systemów Czasu Rzeczywistego

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

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

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

Języki i techniki programowania Ćwiczenia 2

/*W tym miejscu funkcja system wywołuje systemową komendę PAUSE tj.czeka tak długo, aż zostanie wciśnięty dowolny znak z

Programowanie Komputerów 2FD. Materiały pomocnicze do laboratorium

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

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

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Instrukcja pomocnicza

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Laboratorium Procesorów Sygnałowych

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Wprowadzenie do środowiska Qt Creator

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

Programator-debugger JTAG/SWIM dla mikrokontrolerów STM32 i STM8

LINQ TO XML. Autor ćwiczenia: Marcin Wolicki

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

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

Rozdział 2. Debugowanie kodu

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

KONFIGURACJA NOWEGO PROJEKTU W CODE COMPOSER STUDIO

Instalacja sieciowa Autodesk AutoCAD oraz wertykali

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

2. Kliknij Insert->Userform. Jeżeli Toolbox nie pojawi się automatycznie, kliknij View -> Toolbox. Otrzymany widok powinien być jak poniżej.

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie niskopoziomowe

FAQ: /PL Data: 16/11/2007 Programowanie przez Internet: Konfiguracja modułów SCALANCE S 612 V2 do komunikacji z komputerem przez VPN

MentorGraphics ModelSim

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konfiguracja pakietu CrossStudio for MSP

Instalacja i opis podstawowych funkcji programu Dev-C++

Przygotowanie środowiska Java do prawidłowej obsługi podpisu elektronicznego w epuap

Snifery wbudowane w Microsoft Windows

NETBEANS PROFILER TOMASZ ŁUKASZUK

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Instrukcja ręcznej konfiguracji połączenia z Internetem przez. modem ED77 w systemie Windows XP

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI

Rejestracja użytkownika.

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Tworzenie oprogramowania

1. Tworzenie nowego projektu.

VIII. Wyszukiwanie błędów

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

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Instrukcja ręcznej konfiguracji połączenia z Internetem przez. modem ED77 w systemie Windows 2000

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

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Informatyka I : Tworzenie projektu

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

I - Microsoft Visual Studio C++

Instytut Teleinformatyki

Programowanie procesora Microblaze w środowisku SDK

Code Composer Studio v4 (3)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

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

Instrukcja Wykonawcy - Moduł Aukcji/Licytacji (bez podpisu elektronicznego)

Maszyna stanu State Machine

AsLinkEx instrukcja obsługi

Wstęp do programowania

Zmienne, stałe i operatory

Opis programu Profbi Delegacje 2011 Delegacje Krajowe.

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Instrukcja instalacji programu SYSTEmSM

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Kwerenda. parametryczna, z polem wyliczeniowym, krzyżowa

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Udostępnianie drukarki

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Diagnostyka pamięci RAM

Pętla for. Wynik działania programu:

INFORMATOR TECHNICZNY WONDERWARE. Odczytywanie danych z arkusza Excel za pomocą zapytań SQL do aplikacji InTouch

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

Transkrypt:

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni Wykład 7 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji Konfiguracja debuggera Wstrzymywanie działania programu Sprawdzanie wartości zmiennych Śledzenie działania programu Przykłady

Przykładowy projekt program oblicza odsetki od podanej kwoty przy zadanym oprocentowaniu rocznym przez ustaloną liczbę lat

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone)

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone)

Konfiguracja

Konfiguracja

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona Cel kompilacji Build >> Select target >> Debug

Konfiguracja Symbole debuggowania Project >> Build options >> Produce debugging symbols [-g] (zaznaczone) Opcja Strip all symbols from binary [-s] nie powinna być zaznaczona Cel kompilacji Build >> Select target >> Debug

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5 Uruchomienie programu Debug >> Start lub F8

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5 Uruchomienie programu Debug >> Start lub F8

Wstrzymywanie działania Definiowanie punktu wstrzymania Debug >> Toggle breakpoint lub F5 Uruchomienie programu Debug >> Start lub F8

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows Okno Watches pokazuje wartości zmiennych lokalnych i argumentów funkcji

Okna debuggera Okna debuggera zawierają różne informacje o wykonywanym programie Debug >> Debugging windows Okno Watches pokazuje wartości zmiennych lokalnych i argumentów funkcji

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7)

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7)

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7) Po osiągnięciu linii 12 program oczekuje na podanie danych (funkcja scanf()) Podobnie w liniach 14 i 16 Wartości zmiennych możemy sprawdzić w oknie Watches

Śledzenie działania programu W celu wykonania następnych wierszy programu wykonamy polecenie Next line (F7) Po osiągnięciu linii 12 program oczekuje na podanie danych (funkcja scanf()) Podobnie w liniach 14 i 16 Wartości zmiennych możemy sprawdzić w oknie Watches

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza Sterowanie w programie przejdzie do linii 25 (pierwsza instrukcja w wywołanej funkcji) Zmienne i oraz koncowy_mnoznik są niezainicjalizowane

Śledzenie działania programu Po osiągnięciu linii 17 wywołamy polecenie Step into, które służy do wejścia do funkcji, która ma zostać wywołana z bieżącego wiersza Sterowanie w programie przejdzie do linii 25 (pierwsza instrukcja w wywołanej funkcji) Zmienne i oraz koncowy_mnoznik są niezainicjalizowane

Śledzenie działania programu Po przejściu do kolejnego wiersza (F7) widzimy, że zmienna i została zainicjalizowana, natomiast wartość zmiennej koncowy_mnoznik pozostała bez zmian

Śledzenie działania programu

Śledzenie działania programu Po przejściu do kolejnego wiersza (F7) widzimy, że zmienna i została zainicjalizowana, natomiast wartość zmiennej koncowy_mnoznik pozostała bez zmian Znaleźliśmy błąd niezainicjalizowaną zmienną wykorzystując debugger

Debugowanie awarii

Debugowanie awarii

Debugowanie awarii Ten program nie działa kończy działanie w nieprawidłowy sposób Błędu można poszukiwać wykorzystując debugger Debugger zgłosi błąd segmentacji

Debugowanie awarii Debugger zatrzymał się w miejscu, w którym nastąpiła błędna instrukcja (linia 26)

Debugowanie awarii

Debugowanie awarii Debugger zatrzymał się w miejscu, w którym nastąpiła błędna instrukcja (linia 26) Wskaźnik n ma wartość 0xbaadf00d (bad food) jest to specjalna wartość używana podczas uruchamiania programów pod kontrolą debuggera do inicjalizowania pamięci

Debugowanie awarii Prześledźmy stos wywołań (Call stack)

Debugowanie awarii Prześledźmy stos wywołań (Call stack)

Debugowanie awarii Prześledźmy stos wywołań (Call stack) Na dole widoczne jest wywołanie funkcji main(), które rozpoczęło program Następnie wywołano funkcję printlist() trzy razy, przy czym w ostatnim wywołaniu pojawiła się wartość 0xbaadf00d Znaleźliśmy błąd niezainicjalizowany wskaźnik

Debugowanie awarii

Debugowanie awarii Informacje z innych ramek stosu możemy uzyskać przełączając widok (Swich to this frame)

Debugowanie awarii Informacje z innych ramek stosu możemy uzyskać przełączając widok (Swich to this frame)

Zaglądanie do zawieszonego programu Jeśli program zatrzymał się z nieznanego powodu można wykorzystać debugger, aby włamać się do programu

Zaglądanie do zawieszonego programu

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań Aby przejść do naszego programu musimy zmienić wątek

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań Aby przejść do naszego programu musimy zmienić wątek

Zaglądanie do zawieszonego programu Po uruchamieniu programu w trybie debugowania mamy możliwość włamania się do niego Menu Debug >> Break debugger Po zatrzymaniu programu sprawdzamy stos wywołań Aby przejść do naszego programu musimy zmienić wątek

Zaglądanie do zawieszonego programu Przechodząc przez kolejne wiersze, obserwujemy, że program krąży między liniami 20 oraz 21 Zmienna i przyjmuje tylko dwie wartości 2 oraz 3

Zaglądanie do zawieszonego programu Przechodząc przez kolejne wiersze, obserwujemy, że program krąży między liniami 20 oraz 21 Zmienna i przyjmuje tylko dwie wartości 2 oraz 3

Zaglądanie do zawieszonego programu Przechodząc przez kolejne wiersze, obserwujemy, że program krąży między liniami 20 oraz 21 Zmienna i przyjmuje tylko dwie wartości 2 oraz 3 Możemy zauważyć, że pętla w działaniu programu wynikała z użycia operatora przypisania w miejsce operatora porównania

Zaglądanie do zawieszonego programu

Podsumowanie Konfiguracja debuggera Wstrzymywanie działania programu Sprawdzanie wartości zmiennych Śledzenie działania programu Przykłady