Entraînement au concours ACM-ICPC



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

Environnements de développement (intégrés)

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

Environnements et Outils de Développement Cours 1 Introduction

Projet de développement

Entraînement au concours ACM-ICPC

IBM Power Systems - IBM i IBM Rational

wxwidgets dans un environnement Microsoft Windows

1. Présentation du TP

Optimisation de logiciels de modélisation sur centre de calcul

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

Tutoriel code::blocks

Programmation système en C/C++

Conventions d écriture et outils de mise au point

Présentation Utilisation. VirtualBox. Firas Kraïem. 22 février 2014

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

TP1 : Initiation à l algorithmique (1 séance)

Module d anonymisation

Manuel de System Monitor

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Guide d administration de Microsoft Exchange ActiveSync

The Mozilla Art Of War. David Teller. 20 septembre Laboratoire d Informatique Fondamentale d Orléans. La sécurité des extensions.

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

UE C avancé cours 1: introduction et révisions

Travailler à l'ensimag avec son matériel personnel

Outils pour la pratique

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

Installation d'un serveur sftp avec connexion par login et clé rsa.

Outils pour les réseaux de neurones et contenu du CD-Rom

Installation de Bâtiment en version réseau

Eclipse atelier Java

Mettre Linux sur une clé USB bootable et virtualisable

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Bases Java - Eclipse / Netbeans

Impression sous Linux

Traitement de données

Intro: WordPress SEO Version Française

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Introduction à Eclipse

JOnAS Day 5.1. Outils de développements

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Installation et prise en main

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

1 Démarrage de Marionnet

Réussir l implémentation de Solid Edge Insight XT avec Digicad

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

Quelques éléments de compilation en C et makefiles

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

TP1. Outils Java Eléments de correction

Licence d utilisation de l application WINBOOKS ON WEB

Utiliser Java sans BlueJ

Installation LTE-SIM. Simulation du réseau 4G (LTE-SIM) en vue d optimiser les ressources spectrales de l opérateur.

< Atelier 1 /> Démarrer une application web

Le PROXY: l identité Internet du CNUDST

Traduction des Langages : Le Compilateur Micro Java

Cours Linux. Cours en ligne Administrateur Systèmes Linux. Académie Libre

Les clients GNU/Linux

Burckel Thomas. Formation. Compétences

GUIDE DE L UTILISATEUR Recoveo Récupérateur de données

Windows Azure Platform Développez, déployez et administrez pour le Cloud Microsoft

Travailler à l'ensimag avec son matériel personnel

Programmation système I Les entrées/sorties

2 - VMWARE SERVER.doc

TP1 - Prise en main de l environnement Unix.

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Partner Entreprise. Modules de cours pour la formation continue Offre IFAPME Verviers

arcopole Studio Annexe 7 Architectures Site du programme arcopole :

Administration du site (Back Office)

Linux 1: Présentation

Documentation Honolulu 14 (1)

Service de lettre électronique sécurisée de bpost. Spécificités techniques

Sommaire Introduction... 3 Le but du projet... 3 Les moyens utilisés... 3 Informations sur le client FTP... 4 Pourquoi une version Linux et

Compilation (INF 564)

2 mars HERS Libramont - Semaine Entreprise. Logiciel Libre et entreprise: un vaste catalogue de services

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

TD/TP 1 Introduction au SDK d Android

Gestion d identités PSL Exploitation IdP Authentic

Remise à niveau d un programme JAVA du domaine public

Session 8: Android File System

Les bons réflexes : le bureau et la zone de notification : Les programmes qui s activent au démarrage ; Enlever / supprimer un programme ;

Retrospect 7.7 Addendum au Guide d'utilisation

UserLock Guide de Démarrage rapide. Version 8.5

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique


PG208, Projet n 3 : Serveur HTTP évolué

Corrigé de l'atelier pratique du module 6 : Transfert de données

Guide rapide d'installation SUSE Linux Enterprise Server 11 SP1

EXTENSION de Microsoft Dynamics CRM Réf FR 80452

MANUEL D INSTALLATION D UN PROXY

Sophos Mobile Encryption pour Android Aide. Version du produit : 1.0

Présentation de solutions de Progiciels de Gestion d'epn Forum des Usages Brest 2010

Chapitre I Notions de base et outils de travail

Crystal Clear Software Ltd

Transcription:

Entraînement au concours ACM-ICPC Déboguage et profilage de programmes C++ Page 1 / 11

Avec un IDE (environnement de développement intégré) Eclipse CDT, NetBeans, Visual C++, XCode, KDeveloper... Fonctionnalités assez avancées (débogage, profilage mémoire, etc.) Lourd à installer, parfois lourd à utiliser Difficile à utiliser conjointement avec des éditeurs externes (emacs, vim...) Difficile d utilisation pour des programmes non développés à l intérieur de l IDE On se concentre ici sur ce qu on peut faire sans IDE (ou en complément) La plupart des outils mentionnés sont disponibles principalement sous Linux Page 2 / 11

Traçage Toujours possible de parsemer son programme C++ de cout <<... Parfois le plus rapide Penser à utiliser le plus intelligemment les deux sorties du programme (cout, cerr) pour pouvoir rediriger les flux d information En Shell Unix : > pour rediriger la sortie standard, 2> pour rediriger la sortie d erreur, pour envoyer la sortie standard dans l entrée d un autre programme (p. ex., less), & pour envoyer les deux sorties dans l entrée d un autre programme Page 3 / 11

Les bonnes options de compilation de GCC -W -Wall pour les messages d avertissement, permettant de détecter des bugs évidents (variables non utilisée, retour de fonction manquante, = utilisé dans un if(), etc.) -pedantic pour encore plus de messages d avertissement Page 4 / 11 -g pour inclure les symboles dans l exécutable généré et permettre le débogage -std=c++98 pour vérifier autant que possible la conformité au standard C++ 1998 -std=c++11 pour vérifier autant que possible la conformité au standard C++ 2011 (nécessaire pour utiliser les nouvelles fonctionnalités du langage) -pg pour faire du profilage (voir plus tard) -O2 à ne pas utiliser quand on veut déboguer : fait disparaître certaines variables ou instructions, etc.

GDB : utilisation On lance GDB avec gdb./mon_programme Principales commandes : r < input pour démarrer le programme en lisant input sur sa sortie standard r redémarre le programme b nom_fonction pour positionner un point d arrêt clear supprime le point d arrêt en court c continue jusqu au prochain point d arrêt n avance d une instruction, ne va pas à l intérieur des appels de fonction s avance d une instruction, va à l intérieur des appels de fonction print expr affiche la valeur d une expression watch expr arrêtera le programme quand la valeur de l expression changera q quitte GDB Page 5 / 11

Interfaces graphiques de GDB gdb -tui pour une simili-interface graphique, assez pratique ddd, KDbg, Insight interfaces graphiques plus ou moins complètes Page 6 / 11

Profilage mémoire avec gnuprof Permet de savoir dans quelles fonctions le programme passe son temps Compiler avec -pg Exécuter Un fichier gmon.out est créé Exécuter gprof./mon_executable > rapport.txt pour analyser ce fichier Étudier rapport.txt Aussi simplement utiliser time./mon_programme pour mesurer le temps pris par un programme Page 7 / 11

Débogage mémoire Programmes identifiant les fuites mémoires, débordement de pile, accès à de la mémoire non allouée sur le tas... : valgrind est une machine virtuelle exécutant le programme en contrôlant chacun des accès mémoire ; très lent, mais très efficace valgrind./mon_programme efence redéfinit les fonctions d allocation mémoire pour détecter les accès incorrects au tas LD_PRELOAD=libefence.so./mon_programme Permettent en général d identifier les bugs au moment où ils apparaissent, contrairement à gdb en cas de corruption mémoire Page 8 / 11

Dépendances ldd donne la liste des bibliothèques dynamiques référencées par un programme nm -D donne la liste des symboles définis par une bibliothèque dynamique ou un exécutable, ou référencés par un exécutable c++filt est un filtre permettant de déchiffrer les noms de symboles C++ encodés Page 9 / 11

Appels systèmes et appels dynamiques strace Liste les appels systèmes (fonctions du noyau) utilisés par un programme donné ; utile pour voir à quels fichiers on accède ou quelles connexions réseaux sont établies ltrace liste les appels de fonctions depuis des bibliothèques dynamiques (y compris des fonctions de la librairie C++) ; attention, seule les fonctions non présentes à l intérieur de l exécutable seront indiquées ; ceci exclut la plupart des classes avec paramètres de modèle (templates) ; utiliser c++filt! Page 10 / 11

Déboguer un programme en cours Suivant la configuration du système, il peut être possible d utiliser gdb, strace, ltrace, sur un programme en cours Simplement ajouter l option «-p pid» en ligne de commande, où pid est l identifiant du processus (p. ex., récupéré avec ps) Parfois réservé à l administrateur du système Page 11 / 11

Contexte public } avec modifications Par le téléchargement ou la consultation de ce document, l utilisateur accepte la licence d utilisation qui y est attachée, telle que détaillée dans les dispositions suivantes, et s engage à la respecter intégralement. La licence confère à l utilisateur un droit d usage sur le document consulté ou téléchargé, totalement ou en partie, dans les conditions définies ci-après et à l exclusion expresse de toute utilisation commerciale. Le droit d usage défini par la licence autorise un usage à destination de tout public qui comprend : le droit de reproduire tout ou partie du document sur support informatique ou papier, le droit de diffuser tout ou partie du document au public sur support papier ou informatique, y compris par la mise à la disposition du public sur un réseau numérique, le droit de modifier la forme ou la présentation du document, le droit d intégrer tout ou partie du document dans un document composite et de le diffuser dans ce nouveau document, à condition que : L auteur soit informé. Les mentions relatives à la source du document et/ou à son auteur doivent être conservées dans leur intégralité. Le droit d usage défini par la licence est personnel et non exclusif. Tout autre usage que ceux prévus par la licence est soumis à autorisation préalable et expresse de l auteur : sitepedago@telecom-paristech.fr Page 12 / 11