cours-profil

cours-profil

Documents
11 pages
Lire
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Profilage, debogage, optimisationRomaric DAVID´Ecole d’Automne Informatique Scientifique, 2 Decembre´ 2008PlanPlan Profiling Debog´ age Optimisations de programmesIntroductionObjectifs du coursCe cours vous presentera´ les outils d’analyse de vos programmes. En particulier, vous pourrez : Traquer des bugs dans les codes Determiner´ les parties du code gourmandes en temps de calcul Decouvrir´ quelques pistes permettant d’optimiser le programme1 Debogage´Dans cette section, nous presenterons´ les principes des outils de debog´ age et les points importantsdans leur utilisation. Deboguer´ un programme consiste a` chercher pendant son execution´ l’origined’une erreur de comportement. Une erreur de comportement d’un programme lie´ a` un acces` memoire´´frauduleux (hors des zones attribuees au programme) produit le fameux message ”sementation fault(core dumped)”. Cela signifie que l’image memoire´ du processus a et´ e´ placee´ dans un fichier appele´core. Ce fichier peut servir de parametreˆ d’entree´ a` toutes les manipulations present´ ees´ ci-dessous.Pourquoi deboguer´ ? Programme produisant un resultat´ incorrect Un plantage du programme11 Un probleme` lie´ a` la gestion de la memoire´ ) segmentation fault (core dumped)Le principe fondamental du debog´ age de programme est de faire un suivi pas a` pas (instructionpar instruction) de son execution.´ Le programme qui permet de faire ceci s’appelle un debogueur´`(version mal francisee´ de ...

Sujets

Informations

Publié par
Nombre de lectures 87
Langue Français
Signaler un problème
Plan
Plan
Profilage, debogage, optimisation
Romaric DAVID
Ecole d’Automne Informatique Scientifique, 2 Decembre 2008
Profiling
Debogage
Optimisations de programmes
Introduction
Objectifs du cours Cecoursvouspresenteralesoutilsdanalysedevosprogrammes.Enparticulier,vouspourrez:
1
Traquer des bugs dans les codes
lucDteenesndalecsdmpitseudocedogruameterminerlespar
Decouvrir quelques pistes permettant d’optimiser le programme
Debogage
Danscettesection,nouspresenteronslesprincipesdesoutilsdedebogageetlespointsimportants dansleurutilisation.Deboguerunprogrammeconsiste`achercherpendantsonexecutionlorigine duneerreurdecomportement.Uneerreurdecomportementdunprogrammeliea`unacc`esmemoire frauduleux(horsdeszonesattribueesauprogramme)produitlefameuxmessagesementationfault (coredumped).Celasigniequelimagememoireduprocessusaeteplaceedansunchierappelecores.oussdei-sceetneserpsnoitaltauoetlsseaminupmˆetredentree`tuepvresedriarap.cCeerhi
Pourquoi deboguer ?
Programme produisant un resultat incorrect
Un plantage du programme
1
1 me`lilenUborpmmeioertiondelae`alagessegmentation fault (core dumped)
Leprincipefondamentaldudebogagedeprogrammeestdefaireunsuivipas`apas(instruction parinstruction)desonexecution.Leprogrammequipermetdefairececisappelleundebogueur ` (versionmalfranciseededebugger).Apartirdesindicationsdanslecodecompile,ledebogueur peut faire le lien entre le code source et le code assembleur produit. Commeilyaungrandnombredinstructionsdansunprogramme,ledebogueurpermetaussi ` de fixer despoints d’arreˆtchaque fois que le programme passe par ce point, il s’arreˆte et le. A debogueur reprend la main. Pour examiner les valeurs, le debogueur permet egalement de surveiller des variables. Ceci per-met de savoir a` quel etape de l’execution d’un programme une variable prend une valeur incoherente. Andepermettraaudebogueurdefairelelienentrecodeassembleuretcodesource,ilfaut compiler le programme avec l’option-gIloption desactive par defaut toute optimisation. . Cette estneanmoinspossibledecombineroptimisationetpresencedesymbolesdedebogage.Lessym-bolesdedebogageassocientlesstructuresdecontrˆoledulangageaucodeassembleur.Silssont presents(associesauchersource),ledebogueurafcheralecodesourcecorrespondantlorsquele programmeestarrˆete. Auniveausyste`me,lesdebogueurs(testeavecidb,gcc,totalview7)utilisentlappelsyst`eme 2 ptrace.Cetteappelpermetdecontroˆlerlexecutiondunautreprocessus. Lesdebogueursdisposantdepossibilitesetenduespermettentdafcherlesdonnees,egalement sousformegraphique.Unautregrostravaildemiseenformeconsisteenlafchagededonnees structureesouobjet.Cestunintereˆtmajeurdesdebogueurs(p/ra`lafchagemanuel).Lesdebogueurs sont souvent construits sous la forme d’un outil textuel, auquel peut s’adjoindre une interface graphique.
Debogueurs en mode texte
dbx (Solaris, IRIX, AIX)
gdb (tous)
idb (Intel, Linux IA64 et X86-64)
tv8cli (Totalview)
pdb (pour python)
Des interfaces graphiques les pilotent :
dcxbaeevalbfrcaInteer).buggayDeDatalpsidD(dddb,g
DDT (Allinea)
Interface de totalview
Kdbg (gdb)
Eclipse Ptp (Parallel tools platform) 1 Classedoutils`apart 2 Cfhttp://falco.next-touch.com/repository/securite_informatique/linux/ anti-anti-ptrace.pdf
2
2
Profiling
Une question que l’on se pose souvent quand on attend qu’un programme se termine est de savoir quellefonctionrepresentelaplusgrandepartiedutempsdexecution.Pourmesurerle temps passe dansunefonction,onpeututiliserlamethodesimplesuivante.
Une methode simple de mesure du temps passe
time=get time(now) fonction calcul(...) time spent=get time(now)-time save(time spent)
Notezquelasauvegardedutempspasseepeutˆetrecompliquee(gestionvariableglobale,...) Limite de la methode : Facile pour une fonction, mais pour plusieurs ?
. .Facile pour une metrique, mais . tiser.dautomaeneitssce Lebutdeduproling(analysecomportementale)estdeconnaˆıtrelecomportementdupro-gramme`alexecution.Enpremierlieu,lesprolerspeuventsinteresserauprogrammetoutseul (sansexaminerlenvironnementdanslequelilsexecute),cest-`a-diredeterminerletempspasse dans differentes fonctions (outils comme gprof par exemple). Ainsi, sans avoir d’idee a` priori sur la fonction couˆ teuse (ce qui peut eˆtre le cas quand on n’est pasledeveloppeurducode),leprolerpeutpointerdudoigtunefonctionparticuli`ere.Lesprolers renvoientengeneralletempspassedansunefonctionainsiquelenombredappels.Siunefonction nestpasappeleeassezsouvent,celapeutrendrecomptedebugsdanssonalgorithme(fonction appeleedanslesmauvaisesconditions,...). Des outils plus evolues permettent d’analyser l’interaction du programme avec son environ-nement. Par exemple, unprofilerpeut indiquer le nombre de defauts de cache survenus durant l’execution d’un programme. Lasequencedeprolingcommenceparunephasedinstrumentation(=ajout d’instructions) destineesa`rassemblerlinformation.Apre`slexecutionduprogrammemodie,lesdonneesissues delinstrumentationsontrassembleesetanalyseesparunoutilspecique.
Donnees recueillies par le profiler
Temps d’execution de chaque fonction (profil plat)
ilisateuriquesutMter
mmeograduprppledeaarhpdnguioatntseeprres:eellaC/srellaC
Tempctionappeleeanoileppetnanof+ncsisilu:fvecton
Exclusive : fonction appelante uniquement
Linstrumentationpeutˆetrestatique.Elleseradanscecaseffectueeauplustarda`lacompilation. Linstrumentationdynamiquealieua`lexecutionetfaitappel`adestechniquespluscomplexes.
3