Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 1 / 20 et. structures de données simples



Documents pareils
Bases de programmation. Cours 5. Structurer les données

Conventions d écriture et outils de mise au point

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Le prototype de la fonction main()

Testez votre installation. Créer un répertoire vide

Débogage de code* Mardi 13 décembre Romaric DAVID Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

Guide d'installation rapide TFM-560X YO.13

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Package Contents. System Requirements. Before You Begin

Les failles Format String

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Installation et compilation de gnurbs sous Windows

Java Licence Professionnelle CISII,

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Introduction au langage C

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

ACTIVITÉ DE PROGRAMMATION

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Algorithmique et Programmation, IMA

Le langage C. Séance n 4

Chapitre 1 : La gestion dynamique de la mémoire

Contraintes, particularités. 1. Généralités Gestion de la mémoire a. Type des variables et constantes... 2

Exercice sur les Dockers

Quick Installation Guide TBW-106UB H/W: V1

Oracle Learning Library Tutoriel Database 12c Installer le logiciel Oracle Database et créer une Database

Algorithmique I. Algorithmique I p.1/??

Votre premier projet Android

Outils pour la pratique

Paxton. ins Net2 desktop reader USB

Impression sous Linux

Cours de Programmation 2

Programme Compte bancaire (code)

COMPARAISONDESLANGAGESC, C++, JAVA ET

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Tutoriel de formation SurveyMonkey

Les structures. Chapitre 3

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Analyse de sécurité de logiciels système par typage statique

Corrigé des exercices sur les références

Le Cloud Computing est-il l ennemi de la Sécurité?

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Machines virtuelles fonctionnelles (suite) Compilation ML Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Les arbres binaires de recherche

OS Réseaux et Programmation Système - C5

Description du logiciel Modbus RTU

CLIM/GTP/27/8 ANNEX III/ANNEXE III. Category 1 New indications/ 1 re catégorie Nouvelles indications

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

Exercices sur SQL server 2000

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

TP2 : tableaux dynamiques et listes chaînées

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Initiation à l algorithmique

TP1. Outils Java Eléments de correction

Cours 1 : La compilation

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Derrière toi Une machine virtuelle!

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Cours d algorithmique pour la classe de 2nde

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Programmation système en C/C++

STAGE IREM 0- Premiers pas en Python

USB 598. Quick Start Guide (Windows) Guide de démarrage rapide (Windows) USB Modem. Modem USB.

Configurer la supervision pour une base MS SQL Server Viadéis Services

Cours d initiation à la programmation en C++ Johann Cuenin

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Vue d ensemble de Windows PowerShell

Programme awk------introduction rapide

Paris Airports - Web API Airports Path finding

IFT3902 : (Gestion de projet pour le) développement, (et la) maintenance des logiciels

Restaurant Application Quick Reference Guide

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

Cours Informatique Master STEP

Application Form/ Formulaire de demande

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Principe de fonctionnement du lanceur d'application "AdisTlsStartCfgLotus"

Déploiement de SAS Foundation

Création d un service web avec NetBeans 5.5 et SJAS 9

Rappels Entrées -Sorties

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

ArcScan Tutorial. Copyright Esri All rights reserved.

Once the installation is complete, you can delete the temporary Zip files..

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Installer Enterprise Miner 5.1 en SAS environnement Windows

Olivier Mondet

Java DataBaseConnectivity

VTP. LAN Switching and Wireless Chapitre 4

VoD ( Video on Demand ) avec VLC

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Guide d installation de SugarCRM Open Source version 4.5.1

Rapport de Mini-Projet en ArcGIS Engine

Configuration de TCPIPconfig.h

Transcription:

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Présentation du débogueur gdb Sandrine Blazy - 1ère année 6 décembre 2007 Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 1 / 20 et

Mise au point de programmes Utilisation d un langage de haut niveau beaucoup d erreurs détectées par le compilateur exceptions Affichage de résultats intermédiaires et de messages d erreur modification du code Programmation défensive vérification de propriétés sur les variables Utilisation d un débogueur apprentissage d un nouvel outil solution efficace Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 2 / 20 et

Rôle d un débogueur Aide à la correction d erreurs quand on veut : faire démarrer un programme en précisant des informations pouvant affecter son comportement, faire arrêter un programme dans des conditions particulières, examiner ce qui s est passé quand le programme s est arrêté modifier le programme. Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 3 / 20 et

Débogueur Examine un programme durant son exécution. Exemples quel est le résultat de l exécution de la ligne 26? quelle est la valeur de telle variable? que fait telle fonction? que se passe-t-il si j impose telle valeur à telle variable? Notion de point de programme Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 4 / 20 et

Compilateur et débogueur le compilateur fournit des informations au débogueur format commun le choix du débogueur est lié à celui du débogueur le débogueur exploite du code non optimisé Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 5 / 20 et

Fonctionnement du débogueur gdb interprète les commandes de l utilisateur option de compilation -g démarrage : gdb exécutable puis run utilisation : placement de points d arrêt statiques ou dynamiques l utilisateur contrôle l exécution du programme affiche l état de la mémoire sortie : quit Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 6 / 20 et

Points d arrêts Placement de points d arrêts : commande break b ma fonction b 12 connue par la commande list l ma fonction... b 25 if (x!= 7) continue Suppression : delete et clear delete 1 clear ma fonction, clear 12 Activation : enable et disable Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 7 / 20 et

Points d observation watch (x == 5) watch ma var Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 8 / 20 et

Contrôle de l exécution next exécute entièrement une instruction step exécute une seule instruction finish exécute une instruction jusqu à son point d appel Cours d Algorithmique-Programmation 2 e partie (IAP2): 6programmation décembre 2007impérative 9 / 20 et

Gestion des données Affichage de valeurs print print /x pt, print * pt display set ma var = ma val whatis ma var ptype ma var Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 10 / 20 et

Différence entre ptype et whatis struct complex {double real; double imag;} v; (gdb) whatis v type = struct complex (gdb) ptype v type = struct complex { double real; double imag; } Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 11 / 20 et

La commande where Fournit le chemin des appels de fonctions qui ont amené à l endroit courant. (gdb) where #0 maxmin (t=0xbffffad0, n=5, pmax=0xbffffae4, pmin=0xbffffae8) at coursgdb.c:9 #1 0x00001f48 in main () at coursgdb.c:29 Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 12 / 20 et

La commande info info source (gdb) info source Current source file is pgm.c Compilation directory is /home/sandrine/iap/ Located in /home/sandrine/iap/dbg/pgm.c Contains 31 lines. Source language is c. Compiled with stabs debugging format. Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 13 / 20 et

La commande info info functions (gdb) info functions All defined functions: File pgm.c: int main(); void maxmin(int *, int, int *, int *); Non-debugging symbols: 080483dc printf 080483ec libc_init_first 0804840c scanf 0804841c exit 0804842c _start Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 14 / 20 et

La commande info info breakpoints (gdb) info breakpoints Num Type Disp En Address What 1 breakpoint keep y 0x08842 in main at pgm.c:25 2 breakpoint keep y 0x048a6 in maxmin at pgm.c:8 3 breakpoint keep y 0x048df in maxmin at pgm.c:12 Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 15 / 20 et

Exécution d alternatives 10 for (i=1; i<n; i++) (gdb) n 11 {if (t[i]>max) (gdb) 12 max=t[i]; (gdb) 13 if (t[i]<min) (gdb) 10 for (i=1; i<n; i++) (gdb) p t[i] $4 = 3 (gdb) p max $5 = 3 (gdb) p min $6 = 2 Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 16 / 20 et

Pointeurs (gdb) l 3 int main() 4 {int *pointeur; 5 pointeur=null; 6 pointeur=(int *)malloc(sizeof(int)); 7 *pointeur=12; 8 return 0;} (gdb) b main Breakpoint 1 at 0x8048476: file pt.c, line 5. (gdb) run Starting program: /home/sandrine/iap/pt Breakpoint 1, main () at pt.c:5 6 pointeur=null; (gdb) s 7 pointeur=(int *)malloc(sizeof(int)); (gdb) p pointeur $1 = (int *) 0x0 Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 17 / 20 et

Pointeurs (suite) 6 pointeur=null; (gdb) s 7 pointeur=(int *)malloc(sizeof(int)); (gdb) p pointeur $1 = (int *) 0x0 (gdb) n 8 *pointeur=12; (gdb) p pointeur $2 = (int *) 0x80495b8 (gdb) p *pointeur $3 = 0 Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 18 / 20 et

segmentation fault [sb@lunix EX_GDB]$./mon_prog Segmentation fault [sb@lunix EX_GDB]$ gdb mon_prog GNU gdb 6.6 Copyright 2006 Free Software Foundation, Inc.... (gdb) run Starting program: /home/sb/gdb/mon_prog Program received signal SIGSEGV, Segmentation fault. 0x0804848c in inserer (eltnouv=3, eltref=2, ll=0xbffff708) at mon_prog.c:41 41 nouv->donnee=eltnouv; (gdb) l 41 38... Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 19 / 20 et

segmentation fault (suite) Program received signal SIGSEGV, Segmentation fault. 0x0804848c in inserer (eltnouv=3, eltref=2, ll=0xbffff708) at mon_prog.c:41 41 nouv->donnee=eltnouv; (gdb) l 41 38 39 /* allocation de la nouvelle cellule */ 40 /* nouv = (Liste)malloc(sizeof(elt)); */ 41 nouv->donnee=eltnouv; 42 43 /* recherche de la place dans la liste */ 44 prech = *ll; Cours d Algorithmique-Programmation 2 e partie (IAP2): 6 programmation décembre 2007 impérative 20 / 20 et