CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

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

Tworzenie oprogramowania

Programowanie proceduralne w języku C++ Podstawy

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; }

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

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

Wstęp do programowania

Programowanie I C / C++ laboratorium 01 Organizacja zajęć

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

Praca w środowisku Visual Studio 2008, Visual C

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

Wskaźniki. Informatyka

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

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Programowanie w C. dr inż. Stanisław Wszelak

Wprowadzenie do środowiska Qt Creator

Programowanie procesora Microblaze w środowisku SDK

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

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

Programowanie mikrokontrolerów AVR

Programowanie Systemów Wbudowanych

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

Programowanie w języku C++

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

Podstawy programowania komputerów

Laboratorium 6: Dynamiczny przydział pamięci. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Informatyka I : Tworzenie projektu

Stałe, tablice dynamiczne i wielowymiarowe

Adam Kotynia, Łukasz Kowalczyk

Utworzenie pliku. Dowiesz się:

Programowanie Systemów Czasu Rzeczywistego

Programowanie w Javie

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Załącznik 1 instrukcje instalacji

Lab 9 Podstawy Programowania

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Jak rozpocząć pracę z mikrokontrolerami?

RATIONAL PURIFY przygotował: Krzysztof Jurczuk Politechnika Białostocka Wydział Informatyki Katedra Oprogramowania ul. Wiejska 45A Białystok

Jak napisać listę jednokierunkową?

Zaawansowane programowanie w języku C++ Wstęp

Cwiczenie nr 1 Pierwszy program w języku C na mikrokontroler AVR

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Assembler w C++ Syntaksa AT&T oraz Intela

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

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

MS Visual Studio Express 2012 for Web instalacja i konfiguracja

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

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

Programowanie. Ćwiczenie Język C. Środowisko programowania Visual Studio

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie niskopoziomowe

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

Wprowadzenie do Valgrinda

Instalacja i opis podstawowych funkcji programu Dev-C++

WPROWADZENIE DO INFORMATYKI

Wykład 9: Polimorfizm i klasy wirtualne

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

1.Przygotowanie komputera do programowania 2. Instalacja Dev-C++

Instalacja środowiska Eclipse

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE LEKCJI: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA: 4 ŚRODKI DYDAKTYCZNE:

ZASADY PROGRAMOWANIA KOMPUTERÓW

JDK można pobrać ze strony

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

Zaawansowane programowanie w języku C++ Klasy w C++

Załącznik 1 instrukcje instalacji

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Instrukcja instalacji winbgim

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Podstawy języka Java. przygotował:

Wykład 1: Wskaźniki i zmienne dynamiczne

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Microsoft IT Academy kurs programowania

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

Zacznij Tu! Poznaj Microsoft Visual Basic. Michael Halvorson. Przekład: Joanna Zatorska

Programowanie MorphX Ax

Tworzenie i wykorzystanie usług sieciowych

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

Języki i metodyka programowania. Wskaźniki i tablice.

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Języki i paradygmaty programowania - 1

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

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

PROE wykład 1. dr inż. Jacek Naruniec

media Blitz wydajne sytemy szablonów

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

Db4o obiektowa baza danych wersja.net

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

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

WPROWADZENIE DO JĘZYKA JAVA

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

Java jako język programowania

Podstawy programowania obiektowego

Transkrypt:

CODE::BLOCKS & VALGRIND OPRACOWAŁ MICHAŁ BETHKE

O CZYM PREZENTACJA? Code::Blocks Informacje wstępne Skąd ściągnąć? Jak zainstalować? (wersja linuksowa) Rzut okiem na panel główny Tworzenie naszego pierwszego projektu Debugger Valgrind Instalacja/konfiguracja GCC a Valgrind Składnia Funkcjonalności Wykrywanie wycieków pamięci Wykrywanie odniesień poza pamięć Wykrywanie niezainicjalizowanych zmiennych Inne

CODE::BLOCKS

INFORMACJE WSTĘPNE Code::Blocks - zintegrowane środowisko programistyczne na licencji GNU (a więc całkowicie darmowe), dla programistów C/C++. Cechuje je niska pamięciożerność oraz prostota obsługi. Działa zarówno pod Windowsem, jak i Linuksem.

SKĄD ŚCIĄGNĄĆ? JAK ZAINSTALOWAĆ? Wchodzimy na WWW.CODEBLOCKS.ORG ściągamy! lub

w przypadku linuksów, w konsoli wpisujemy: sudo apt-get/yum install codeblocks

RZUT OKIEM NA PANEL GŁÓWNY

TWORZENIE NASZEGO PIERWSZEGO PROJEKTU Standardowo jak większość IDE, Code::Blocks oferuje wygodne tworzenie większych projektów, składających się z wielu plików nagłówkowych i zasobów. Aby stworzyć nowy projekt wybieramy: File New Project

Wybieramy typ projektu.

Wybieramy interesujący nas język. (dla projektu konsolowego)

Wpisujemy nazwę projektu oraz ścieżkę docelową.

Wybieramy kompilator oraz opcje związane z wersją debug/release.

Widok nowego, surowego projektu.

DEBUGGER Debugger w Code::Blocks spełnia podstawowe funkcjonalności, jednak nie jest tak rozwinięty jak w konkurencyjnych środowiskach (darmowy Eclipse, komercyjny MS Visual Studio), jednak dobrze wykorzystany umożliwia dokładne prześledzenie dowolnej linii w naszym kodzie.

Widok w trakcie debuggowania - włączony breakpoint oraz dwa specjalne okna: podgląd zmiennych i podgląd stosu.

Debuggowanie ciąg dalszy

VALGRIND

INSTALACJA KONFIGURACJA WWW.VALGRIND.ORG

Po ściągnięciu paczki na dysk należy ją rozpakować, następnie wejść do niej oraz wpisać 1. configure 2. make 3. make install Po tych czynnościach Valgrind jest gotowy do pracy!

GCC A VALGRIND Jeśli chcemy korzystać z Valgrinda w pełni, należy zawsze dodać opcję g do kompilacji. Powoduje to dodanie dodatkowych symboli dla debuggera, dzięki czemu Valgrind potrafi wykryć i podać dokładną linię kodu w której nastąpił wyciek pamięci. gcc source.c g o output

SKŁADNIA valgrind [ opcje ]./program [ opcje programu ]

przykład valgrind - leak-check=yes - log-file=log.txt./prog opis Sprawdź program prog pod kątem wycieków pamięci i zapisz wyniki do pliku log.txt. Więcej w manualu lub w trakcie prezentacji

WYKRYWANIE WYCIEKÓW PAMIĘCI W języku C musimy mieć świadomość, że nie istnieje coś takiego jak Garbage Collector, a więc całe usuwanie niepotrzebnych już zmiennych dynamicznych spoczywa na barkach programisty. Na pomoc przychodzi Valgrind, który potrafi wykryć zmienne niezwolnione z pamięci. przykład int main() { int* x = malloc( sizeof(int) * 1000 ); // free( x ); return 0; } Tracimy aż 1000 * sizeof(int) bajtów! Przykład jest dobry dla hipotetycznej sytuacji kiedy system operacyjny nie jest odpowiedzialny za zwalnianie pamięci po skończeniu pracy aplikacji.

WYKRYWANIE ODNIESIEŃ POZA PAMIĘĆ Ile razy widzieliśmy magiczny napis w trakcie wykonywania programu: Segmentation fault? Valgrind pomoże nam znaleźć odniesienie poza alokowaną pamięć. przykład int main() { int* x = malloc( sizeof(int) * 5); x[5] = 123; free( x ); return 0; } Niby wszystko jest w porządku, ale coś nie gra

WYKRYWANIE NIEZAINICJALIZOWANYCH ZMIENNYCH Valgrind potrafi wskazać użycia niezainicjalizowanych zmiennych. Dzięki temu możemy wykluczyć potencjalnie niebezpieczne fragmenty kodu. przykład int main() { int x; if ( x == 5 ) format_c(); return 0; } Raczej nie chcemy, aby pod zmienną x znalazła się przypadkowo wartość 5

INNE Valgrind może znaleźć nieprawidłowe użycia funkcji free(). Valgrind nie wykryje wyjścia poza zakres tablicy STATYCZNEJ! int main() { int x; free( x ); return 0; } int main() { int x[5]; x[8] = 52; return 0; }

DZIĘKUJĘ ZA UWAGĘ