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



Podobne dokumenty
Wprowadzenie do środowiska Qt Creator

Wstęp do programowania. Wykład 1

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Programowanie komputerowe. Zajęcia 1

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie - wykład 4

I - Microsoft Visual Studio C++

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

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Podstawy Programowania

Wstęp do programowania

Programowanie C++ Wykład 1 - Aplikacje konsowlowe w środowisku QT. dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Podstawy Programowania. Wykład 1

Podstawy programowania skrót z wykładów:

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Programowanie obiektowe i C++ dla matematyków

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wyjątki (exceptions)

Przekazywanie argumentów wskaźniki

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

C++ - [4-7] Polimorfizm

Podstawy programowania w C++

Programowanie proceduralne w języku C++ Podstawy

C++ - [3-5] Pliki i strumienie w C++

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

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

Wstęp do informatyki- wykład 11 Funkcje

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

Programowanie w Javie

Zadanie 2: Arytmetyka symboli

Język C++ wykład VIII

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

Programowanie w językach

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Wstęp do informatyki- wykład 9 Funkcje

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Ćwiczenia podstawowe, zestaw 5, część 1

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Wstęp do informatyki- wykład 7

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Pytania sprawdzające wiedzę z programowania C++

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Wstęp do programowania

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

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

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Operacje wejścia/wyjścia odsłona pierwsza

Część 4 życie programu

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

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

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Programowanie w języku C++ Grażyna Koba

Podstawy Programowania Podstawowa składnia języka C++

Pliki wykład 2. Dorota Pylak

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

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

C++ wprowadzanie zmiennych

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Tworzenie oprogramowania

Programowanie Obiektowew języku C++ Zadania L4

Język C++ Różnice między C a C++

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Algorytm. a programowanie -

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

1. Wypisywanie danych

Utworzenie pliku. Dowiesz się:

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

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

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Laboratorium 1 - Programowanie proceduralne i obiektowe

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Programowanie Systemów Czasu Rzeczywistego

Algorytmy, reprezentacja algorytmów.

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

1 Podstawy c++ w pigułce.

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Programowanie niskopoziomowe

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Transkrypt:

Slajd 1 z 10 C++ - [1-3] Debugowanie w Qt Creator Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 15 maja 2013 r.

Slajd 2 z 10 Pojęcia związane z debugowaniem DEBUGOWANIE (z ang. debugging odrobaczanie) proces systematycznego redukowania liczby błędów w oprogramowaniu, który zazwyczaj polega na kontrolowanym wykonaniu programu pod nadzorem debuggera (źródło: Wikipedia). BUG (ang. robak, insekt) w kontekście programowania oznacza błąd uniemożliwiający lub powodujący nieprawidłowe działanie programu (źródło: Wikipedia). DEBUGGER (ang. Debug tool, Debugger odpluskwiacz) program komputerowy służący do dynamicznej analizy innych programów, w celu odnalezienia i identyfikacji zawartych w nich błędów.

Slajd 3 z 10 Etapy debugowania ETAPY DEBUGOWANIA jest to kwestia bardzo indywidualna, ale można wyróżnić następujące ogólne etapy debugowania (źródło: http://pl.wikipedia.org/wiki/debugowanie): 1. Reprodukcja błędu odkrycie błędu i umiejętność celowego wywołania błędu w programie. 2. Wyizolowanie źródła błędu eliminacja wszystkich tych czynników, które nie przyczyniają się bezpośrednio do powstania błędu. 3. Identyfikacja przyczyny awarii obserwacja stanów programu podczas jego kontrolowanego uruchomienia (np. poprzez debugowanie). 4. Usunięcie defektu należy zwrócić uwagę, czy usnięcie jednego defektu nie spowoduje powstania innych błędów (nowych lub takich, które występowały przed zaobserwowaniem usuniętego defektu. 5. Weryfikacja powodzenia naprawy w tym celu program testowany jest róznymi zestawami danych wejściowych.

Slajd 4 z 10 Konfiguracja Qt Creator do debugowania TRYBY BUDOWANIA PROGRAMU wyróżniamy: Tryb Debug plik binarny (będący wynikiem kompilacji i połączenia plików źródłowych) zawiera dodatkowe informacje umożliwiające debugowanie programu (dzieje się to kosztem wolniejszej pracy programu oraz większego zużycia pamięci operacyjnej). Tryb Release plik binarny pozbawiony informacji umożliwiających debugowanie programu w tym trybie kompiluje się programy w wersjach przeznaczonych dla użytkowników końcowych. KONFIGURACJA TRYBU BUDOWANIA PROGRAMU tryb budowania ustawiamy na Debug (patrz: obok).

Slajd 5 z 10 Debugowanie w programie Qt Creator AKCJE DEBUGGERA dostępne są w menu Debugowanie. Rozpoczęcie oraz kontynuowanie debugowania możemy zrealizować za pomocą przycisku:. Najważniejsze z nich są dostepne także za pomocą następujących skrótów klawiszowych: [F5] rozpoczęcie albo kontynuacja debugowania; [F9] włączanie albo wyłączanie pułapki; [F10] wykonanie instrukcji bez wejścia do wnętrza funkcji; [Ctrl]+[F10] wykonanie instrukcji bez wejścia do wnętrza funkcji do momentu napotkania kursora; [F11] wykonanie instrukcji z wejściem do wnętrza funkcji; [Shift]+[F11] wykonywanie instrukcji do momentu wyskoczenia z bieżącej funkcji. Wskaźnik programu Pułapka Przyciski debuggera Przycisk rozpoczęcia debugowania Stos wywołań funkcji programu Podgląd aktualnych zmiennych Zdefiniowane pułapki Komunikaty (wyjście) aplikacji

Slajd 6 z 10 Podstawy debugowania lista zadań ZADANIE 1.3.1: Sprawdź za pomocą debugera działanie poniższgo programu. #include <iostream> #include <cmath> using namespace std; int main() { int r = 5; double obwod = 2*M_PI*r, pole = pow(m_pi, 2)*r; cout << "Dane jest koło o promieniu " << r << " cm.\n"; cout << "Obwód koła wynosi " << obwod << " cm." << endl; cout << "Pole koła wynosi " << pole << " cm2." << endl; return 0; } ZADANIE 1.3.2: Sprawdź za pomocą debugera działanie poniższego programu. #include <iostream> #include <cmath> using namespace std; int main() { int r = 5; double obwod = 2*M_PI*r, pole = pow(m_pi, 2)*r; cout << ' ' << r << ' ' << obwod << ' ' << pole << endl; return 0; }

Slajd 7 z 10 Przygotowanie danych dla operacji wejścia Obecnie w programie Qt Creator podczas debugowania nie można wczytywać danych bezpośrednio z klawiatury. Można to jednak zasymulować, ale dane będą wczytywane z pliku tekstowego, a nie z klawiatury. Z drugiej strony, wyobraźcie sobie wczytywanie miliona liczb z klawiatury. Przygotowanie pliku tekstowego z milionem liczb to jedynie kwestia napisania krótkiego programu. Po przygotowaniu pliku tekstowego z danymi wejściowymi należy umieścić go np. w katalogu z binarną wersją programu (w Qt Creator jest to zwykle katalog, którego nazwa kończy się na Debug, a nie katalog zawierający pliki źródłowe projektu). Czasami można znaleźć także katalog, którego nazwa kończy się na Release, ale taka wersja programu nie umożliwia debugowania. W dalszej części zakładamy, że plik tekstowy z danymi wejściowymi znajduje się w katalogu Debug z binarną wersją programu.

Slajd 8 z 10 Konfiguracja debugowania wejścia w Qt Creator W tym celu w oknie Projekty Desktop Uruchamianie należy: Wyłączyć opcję: Uruchom w terminalu ; W polu edycyjnym: Argumenty wprowadzić nazwę pliku tekstowego zawierającego dane wejściowe i poprzedzić ja znakiem < (symbol ten oznacza strumień wejściowy, który zostanie przekazany do programu przez system operacyjny), np. <dane_wejsciowe.txt.

Slajd 9 z 10 Debugowanie operacji wejścia - ćwiczenie ZADANIE 1.3.3: Przygotuj pliki tekstowe z poniższymi danymi (z prawej strony) i umieść je w katalogu z plikiem skompilowanym do debugowania. Następnie sprawdź działanie programu z tymi danymi. Czy program działa zawsze prawidłowo? #include <iostream> using namespace std; // Zwraca obwody 2 czworokątów // dane: długości boków 2 czworokątów int main() { int a1, b1, c1, d1, // boki 1-go czworokąta a2, b2, c2, d2; // boki 2-go czworokąta } cin >> a1 >> b1 >> c1 >> d1; cin >> a2 >> b2 >> c2 >> d2; int obwod_1 = a1 + b1 + c1 + d1, obwod_2 = a2 + b2 + c2 + d2; cout << obwod_1 << ' ' << obwod_2 << endl; 1 3 5 7 2 4 6 4 0 9 4 7 7 3.5 4 5.5 1 11 3 6.5 3 7.5 8 5 100 100 100 100 300 30 30 39 15 11 31 73 39 77 8 91 44531 3761 67273 36477 56519 11673 33274 6548

Slajd 10 z 10 C++ - [1-3] Debugowanie w Qt Creator Dziękuję za uwagę ŹRÓDŁA WIEDZY: Jerzy Grębosz Symfonia C++ Standard oraz http://4programmers.net/, http://cplusplus.com.