Spatial and Image Extensions in DB2 UDB

Werbung
C Tutorium
– Debugging & Tracing –
Knut Stolze
Agenda

Debugging & Debugger
 Tracing
2
Debugger

Schrittweises Nachvollziehen der Logik eines
Programms/einer Funktion
 Zugriff auf und Modifikation von
Programmvariablen
 Programm muss nicht neu übersetzt oder
verändert werden
 Debug-Informationen sind jedoch notwendig
– Compiler-Option “-g”
– Übersetzung mit Optimierung behindert Abbildung
zwischen Kompilat und Quelltext  nicht “-Ox”
verwenden
3
Debugger (2)

Bearbeiten von laufenden Programmen
möglich
– Debugger verbindet sich (“attach”) zu
existierenden Prozess

Analysieren von Core-Dateien
– Art Log bei Programmabstürzen
4
Debugger – Funktionalität

Run
 Starte Programm (evtl. mit Optionen)

Breakpoint setzen
 Programm wird ausgeführt, bis die Stelle im Code bei
der Ausführung erreicht wird; dann hält der Debugger
das Programm an

Next
 Gehe einen Schritt weiter in der Ausführung des
Programms

Step
 Steige in Unterfunktion hinab
5
Debugger – Funktionalität (2)

Continue
 Setze Programm fort, bis zum nächsten Breakpoint

Restart
 Starte Programm neu

Backtrace
 Gib den Aufruf-Stack aus

Print
 Variablen/Datenstrukturen anzeigen (global und lokal)

Set
 Setze Wert einer Variable

…
6
gdb

Kommandozeilen-Debugger
gdb <programm>
– Help-Befehl ist sehr hilfreich

Debugger sehr hilfreich, wenn keine graphische
Oberfläche verfügbar
 Graphische Debugger meist besser und
übersichtlicher
– Quelltext, Variablen, Call-Stack, … werden parallel
angezeigt
7
ddd

Graphischer Debugger
ddd <programm>
8
Debugger – Internas

Debugger startet Programm
– Debugger & Programm sind ein Prozess
 Debugger kann auch Speicher und Strukturen des
Programms zugreifen

Debugger verbindet sich zu laufendem Prozess
– Debugger & Programm sind verschiedene Prozesse
(Betriebssystem trennt klar beide Adressräume)
 spezielle Systemfunktion



Erlaubt Zugriff auf Speicher anderer Prozesse
Funktion nicht selber nutzen, da sehr schwierig zu handhaben
und risikobehaftet
Besondere Rechte notwendig
9
Tracing

Programme werden nach der Entwicklung
nicht mit Debug-Informationen
ausgeliefert/verwendet; Programm wird i.A.
auch noch optimiert
 Starten/Attachen eines Debuggers nicht
möglich
 Nachvollziehen des Programmablaufs muss
mit anderen Mitteln ermöglich werden
10
Tracing (2)

Spezielle Komponente, die TraceInformationen bei Bedarf sammelt
– Ist im fertigen Produkt mit vorhanden

Informationen
– Eintritt, Verlassen, und ausgewählte
Zwischenpunkte/Daten
11
Tracing (3)

Beispiel “System J”
– DBJ_TRACE_ENTRY()
– DBJ_TRACE_EXIT()
– DBJ_TRACE_ACTIVE()
–
–
–
–
DBJ_TRACE_DATA1(tracePoint, length1, data1)
DBJ_TRACE_DATA2(tracePoint, length1, data1,
length2, data2)
DBJ_TRACE_DATA3(tracePoint, length1, data1,
length2, data2, length3, data3)
DBJ_TRACE_NUMBER(tracePoint, str, val)
DBJ_TRACE_STRING(tracePoint, str)
12
Herunterladen