13.07.2015 Aufrufe

Einführung in C/C++ - Alex-weingarten.de

Einführung in C/C++ - Alex-weingarten.de

Einführung in C/C++ - Alex-weingarten.de

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • Keine Tags gefunden...

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

24 KAPITEL 1. PROGRAMMIEREN IN C/<strong>C++</strong>E<strong>in</strong> Fehler wird im Englischen auch als bug bezeichnet, was soviel wie Wanze o<strong>de</strong>r Lausbe<strong>de</strong>utet. E<strong>in</strong> Programm zu entlausen heißt Debugg<strong>in</strong>g. Dazu braucht man e<strong>in</strong>en Debugger(déverm<strong>in</strong>ateur, déboguer). Das s<strong>in</strong>d Programme, unter <strong>de</strong>ren Kontrolle das verlausteProgramm abläuft. Man hat dabei vielfältige Möglichkeiten, <strong>in</strong> <strong>de</strong>n Ablauf e<strong>in</strong>zugreifen. E<strong>in</strong>absoluter Debugger wie <strong>de</strong>r adb(1) bezieht sich dabei auf das lauffähige Programm imArbeitsspeicher – nicht auf <strong>de</strong>n Quellco<strong>de</strong> – und ist somit für die meisten Aufgaben weniggeeignet. E<strong>in</strong> symbolischer Debugger wie <strong>de</strong>r sdb(1), <strong>de</strong>r GNU gdb(1) o<strong>de</strong>r <strong>de</strong>r xdb(1)bezieht sich auf die jeweilige Stelle im Quelltext 16 . Debugger s<strong>in</strong>d mächtige und hilfreicheWerkzeuge. Manche Programmierer gehen so weit, daß sie das Schreiben e<strong>in</strong>es Programmsals Debuggen e<strong>in</strong>er leeren Datei bzw. e<strong>in</strong>es weißen Blattes Papier ansehen. In <strong>de</strong>r Übungwird e<strong>in</strong>e e<strong>in</strong>fache Anwendung <strong>de</strong>s Debuggers vorgeführt.Falls Sie auch mit <strong>de</strong>m UNIX-Debugger nicht alle Würmer <strong>in</strong> Ihrem Programm f<strong>in</strong><strong>de</strong>nund vertreiben können, möchten wir Ihnen noch e<strong>in</strong> altes Hausrezept verraten, das aus e<strong>in</strong>erHandschrift <strong>de</strong>s 9. Jahrhun<strong>de</strong>rts stammt. Das Rezept ist im Raum Wien – Münchenentstan<strong>de</strong>n und unter <strong>de</strong>n Namen Contra vermes o<strong>de</strong>r Pro nescia bekannt. Lei<strong>de</strong>r ist dieREADME-Datei, welche die Handhabung erklärt, verlorengegangen. Wir schlagen vor, die Zeilenals Kommentar <strong>in</strong> das Programm e<strong>in</strong>zufügen. Hier <strong>de</strong>r Text:Gang út, nesso, mid nigun nessikl<strong>in</strong>on,ût fana themo marge an that bên,fan thêmo bêne an that flêsg,ût fan themo flêsgke an thia hûd,ût fan thera hûd an thesa strâla.Droht<strong>in</strong>. Uuerthe sô!1.2.5 Profiler (time, gprof)Profiler s<strong>in</strong>d ebenfalls Programme, unter <strong>de</strong>ren Kontrolle e<strong>in</strong> zu untersuchen<strong>de</strong>s Programmabläuft. Ziel ist die Ermittlung <strong>de</strong>s Zeitverhaltens <strong>in</strong> <strong>de</strong>r Absicht, das Programm schneller zumachen. E<strong>in</strong> e<strong>in</strong>faches UNIX-Werkzeug ist time(1):time prim 1000000Die Ausgabe sieht so aus:real 0m 30.65suser 0m 22.53ssys 0m 1.07sund be<strong>de</strong>utet, daß die gesamte Laufzeit <strong>de</strong>s Programms prim 30.65 s betrug, davon entfielen22.53 s auf die Ausführung von Benutzeranweisungen und 1.07 s auf Systemtätigkeiten. DieAusgabe wur<strong>de</strong> durch e<strong>in</strong>en Aufruf <strong>de</strong>s Primzahlenprogramms aus <strong>de</strong>m Skriptum Programmieren<strong>in</strong> C/<strong>C++</strong> erzeugt, das selbst Zeiten mittels <strong>de</strong>s Systemaufrufs time(2) misst undrund 22 s für die Rechnung und 4 s für die Bildschirmausgabe mel<strong>de</strong>t.E<strong>in</strong> weiterer Profiler ist gprof(1). Se<strong>in</strong>e Verwendung setzt voraus, daß das Programmmit <strong>de</strong>r Option -G kompiliert wor<strong>de</strong>n ist. Es wird gestartet und erzeugt neben se<strong>in</strong>er normalenAusgabe e<strong>in</strong>e Datei gmon.out, das mit gprof(1) betrachtet wird. Besser noch lenktman die Ausgabe von gprof(1) <strong>in</strong> e<strong>in</strong>e Datei um, die sich lesen und editieren läßt:gprof prim > prim.gprofileE<strong>in</strong>e stark gekürzte Analyse mittels gprof(1) sieht so aus:%timethe percentage of the total runn<strong>in</strong>g time of theprogram used by this function.cumsecs a runn<strong>in</strong>g sum of the number of seconds accountedfor by this function and those listed above it.16 Real programmers don’t use source language <strong>de</strong>buggers.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!