diff options
Diffstat (limited to 'doc')
50 files changed, 2976 insertions, 0 deletions
diff --git a/doc/de/argspwdenv.html b/doc/de/argspwdenv.html new file mode 100644 index 0000000..696221f --- /dev/null +++ b/doc/de/argspwdenv.html @@ -0,0 +1,50 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Argumente, Arbeitsverzeichnis, Umgebungsvariablen</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h3> +<a NAME="Environment"></a>Programmargumente, Arbeitsverzeichnis, Umgebungsvariablen +setzen</h3> +Mit <i>Ausführen|Argumente</i> öffnen Sie einen Dialog, in dem +Sie Programmargumente, das Arbeitsverzeichnis sowie Umgebungsvariablen +setzen können. +<h3> +Programmargumente</h3> +In der obersten Eingabezeile können Sie die Programmargumente eingeben, +die an das Programm übergeben werden sollen. Diese werden beim nächsten +Programmstart verwendet. +<h3> +Arbeitsverzeichnis</h3> +Im Eingabefeld darunter können Sie das Arbeitsverzeichnis angeben. +Dieses wird sofort an gdb übergeben, sobald Sie <i>OK</i> drücken. +Das Programm verwendet das neue Arbeitsverzeichnis allerdings erst beim +nächsten Start. +<p>Das Arbeitsverzeichnis gilt auch für gdb selbst! Das angegebene +Arbeitsverzeichnis wird sofort an gdb weitergegeben, d.h. gdb wird die +neue Einstellung verwenden, sobald Sie <i>OK</i> drücken. Das kann +einen Einfluss darauf haben, ob gdb Quellcodedateien findet. +<h3> +Umgebungsvariablen</h3> +Im Bereich für Umgebungsvariablen können Sie einen Ausdruck in +der Form +<tt>VARIABLE=Wert</tt> eingeben und dann <i>Ändern</i> klicken, +um der Umgebungsvariablen <tt>VARIABLE</tt> einen <tt>Wert</tt> zuzuweisen. +Um eine Variable zu entfernen, wählen Sie diese zuerst aus der Liste +darunter aus und klicken dan <i>Löschen</i>. Um einen Wert zu ändern, +geben Sie einfach den neuen Wert ein und klicken <i>Ändern</i>. Wenn +Sie den Namen der Variable ändern und <i>Ändern</i> clicken, +erzeugen Sie eine neue Variable! Die neuen Umgebungsvariablen werden erst +beim nächsten Programmstart verwendet. +<p>Wenn Sie glibc2 unter Linux verwenden, ist es sehr wichtig, dass Sie +der Umgebungsvariablen <tt>LD_BIND_NOW</tt> den Wert <tt>1</tt> zuweisen. +Wenn diese Variable nicht gesetzt ist, können solche Funktionen nicht +betreten werden, die von der Bibliothek <tt>libc</tt> und anderen Shared +Libraries importiert werden. +</body> +</html> diff --git a/doc/de/breakptlist.html b/doc/de/breakptlist.html new file mode 100644 index 0000000..0acb4d2 --- /dev/null +++ b/doc/de/breakptlist.html @@ -0,0 +1,82 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Haltepunkte</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Die Liste der Haltepunkte</h1> +Die Liste der Haltepunkte zeigt alle gesetzten Haltepunkte und Watchpoints +und ermöglicht, diese zu manipulieren. Die Liste der Haltepunkte können +Sie mit dem Menüpunkt <i>Ansicht|Haltepunkte</i> anzeigen. +<h2> +Die Übersicht</h2> +Für jeden Haltepunkt wird folgendes angezeigt: +<ul> +<li> +der Ort,</li> + +<li> +die Anzahl der Stopps,</li> + +<li> +die Anzahl der nächsten zu ignorierenden Stopps (falls gesetzt)</li> + +<li> +die Haltebedingung (falls gesetzt).</li> +</ul> +Das Piktogramm links zeigt an, ob der Haltepunkt aktiviert (tiefroter Punkt) +oder deaktiviert (hellroter Punkt) ist, ob es sich um einen temporären +Haltepunkt handelt (eine winzige Uhr ist sichtbar) und ob der Haltepunkt +bedingt ist (ein Fragezeichen ist sichtbar). +<p>Watchpoints werden durch ein Brillensymbol gekennzeichnet. +<h2> +Haltepunkte manipulieren</h2> +<a NAME="StopProg"></a>Beachten Sie bitte, dass Haltepunkte und Watchpoints +nicht manipuliert werden können solange das zu debuggende Programm +läuft. Wenn das Programm bereits gestartet wurde, muss es zuerst angehalten +werden - entweder indem es auf einen bereits gesetzten Haltepunkt trifft +oder "gewaltsam" indem Sie <i>Ausführung|Unterbrechen</i> wählen. +Dadurch wird das Programm nicht beendet, sondern nur unterbrochen. Sie +können die Haltepunkte jetzt verändern. Wählen Sie danach +<i>Ausführung|Ausführen</i>, +um das Programm fortzusetzen. +<p>Am einfachsten kann ein Haltepunkt im <a href="sourcecode.html">Quellcode-Fenster</a> +gesetzt werden. Wenn Sie den genauen Dateinamen und die Zeilennummer einer +Funktion nicht kennen, können Sie den Funktionsnamen im Feld über +der Liste eingeben und <i>Haltepunkt</i> wählen. +<p>Sie können eine Haltepunkt in der Liste auswählen seine Zustand +mittels <i>Deaktivieren</i> oder <i>Aktivieren</i> ändern. Oder Sie +klicken auf den Haltepunkt mit der mittleren Maustaste - genau so, wie +Sie im Quellcode-Fenster Haltepunkte aktivieren und deaktivieren. +<p>Sie können eine Bedingung setzen (sodass das Programm nur stehen +bleibt, wenn die Bedingung erfüllt ist) oder die Anzahl der zu ignorierenden +Stopps setzen (sodass das Programm die nächsten n Male nicht stehen +bleibt, die es über diesen Haltepunkt läuft). Dazu wählen +sie den Schalter <i>Bedingt</i> und geben die Anzahl der zu ignorierenden +Treffer und/oder die Bedingung ein. +<h2> +Watchpoints manipulieren</h2> +Watchpoints sind den Haltepunkten ähnlich, nur dass das Programm angehalten +wird, sobald sich der Inhalt einer Speicherstelle ändert. Ebenso wie +Haltepunkte können Watchpoints nicht manipuliert werden, solange das +Programm läuft. Weitere Hinweise dazu <a href="#StopProg">siehe oben</a>. +<p>Einen Watchpoint können Sie setzen, indem Sie einen Ausdruck im +Feld über der Liste eingeben und <i>Watchpoint</i> klicken. Das Programm +wird dann angehalten, sobald sich der Wert des Ausdrucks ändert. Beachten +Sie, dass Sie Watchpoints, die eine lokale Variable benötigen, nur +setzen können, wenn das Programm von einem Haltepunkt (oder mittels +Ausführung|Unterbrechen) angehalten wurde. +<p>Zum Entfernen eines Watchpoints wählen Sie diesen in der Liste +aus und klicken <i>Entfernen</i>. Falls der Ausdruck eine lokale Variable +enthält, wird der Watchpoint automatisch entfernt, sobald das Programm +die aktive Funktion verlässt. +<p>Wie mit Haltepunkten können Sie eine Bedingung oder eine Anzahl +zu ignorierender Stopps setzen, indem Sie den Watchpoint auswählen +und <i>Bedingt</i> klicken. +</body> +</html> diff --git a/doc/de/globaloptions.html b/doc/de/globaloptions.html new file mode 100644 index 0000000..4c0de83 --- /dev/null +++ b/doc/de/globaloptions.html @@ -0,0 +1,72 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Globale Einstellungen</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Globale Einstellungen</h1> +Mit dem Menüpunkt <i>Datei|Globale Einstellungen</i> können Sie +folgende Optionen einstellen: +<ul> +<li> +den Befehl, mit dem gdb aufgerufen wird;</li> + +<li> +den Befehl, der das Fenster für die Programmausgabe öffnet,</li> + +<li> +ob KDbg in den Vordergrund kommen soll, sobald das Programm stoppt, und +eine Verzögerung, wann er sich wieder zurückzieht,</li> + +<li> +die Tabulatorweite.</li> +</ul> + +<h4> +Aufruf von gdb</h4> + +<blockquote>Wenn Sie eine alternative Version von gdb verwenden wollen, +geben sie diese unter <i>Aufruf von GDB</i> an. Die Standardeinstellung +ist <tt>gdb --fullname --nx</tt>. Achtung: Sie müssen jedenfalls diese +beiden Argumente übergeben; wenn Sie sie weglassen, kann KDbg nicht +funktionieren. Wenn Sie das Eingabefeld leer lassen, wird die Standardeinstellung +verwendet.</blockquote> + +<h4> +Aufruf eines Terminal-Emulators</h4> + +<blockquote>Falls Sie ein anderes Terminal-Programm verwenden wollen, das +die Ausgabe des Programms anzeigt, geben Sie dieses unter <i>Terminal für +die Programmausgabe</i> an. Die Standardeinstellung ist <tt>xterm -name +kdbgio -title %T -e sh -c %C</tt>. In diesem Eintrag wird <tt>%T</tt> durch +eine Überschrift und <tt>%C</tt> durch ein Bourne-Shell-Skript ersetzt, +das in eine Endlosschleife landet, damit sich das Fenster nicht schließt. +(Keine Sorge, das Skript frisst keine CPU-Zeit, sondern ruft einfach nur +<tt>sleep +3600</tt> in einer Schleife auf :) Eine alternative für diesen Eintrag +wäre zm Beispiel <tt>konsole --name kdbgio --caption %T -e +sh -c %C</tt>.</blockquote> + +<h4> +In den Vordergrund</h4> + +<blockquote>Sie können angeben, ob das KDbg-Fenster in den Vordergrund +gebracht werden soll, sobald das kontrollierte Programm anhält (bei +einem Breakpoint oder wegen eines Signals). Das Fenster wird allerdings +nicht aktiviert (zumindest nicht unter KWM, dem Window Manger von KDE). +Manche Benutzer werden dieses Verhalten als störend empfinden, weshalb +diese Option standardmässig ausgeschaltet ist.</blockquote> + +<blockquote>Wenn diese Option eingeschaltet ist, zieht sich das KDbg-Fenster +auch wieder in den Hintergrund zurück, sobald das Programm fortgesetzt +wird. Allerdings geschieht das erst nach einer Verzögerung, die ebenfalls +angegeben werden kann. Dadurch wird verhindert, dass das Fenster ständig +nach hinten und vorne blinkt, sobald Sie einen Einzelschritt-Befehl absetzen.</blockquote> + +</body> +</html> diff --git a/doc/de/howdoi.html b/doc/de/howdoi.html new file mode 100644 index 0000000..87d08ae --- /dev/null +++ b/doc/de/howdoi.html @@ -0,0 +1,83 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Wie kann ich...?</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Wie kann ich...?</h1> + +<h4> +... eine Haltepunkt setzen?</h4> +Dafür gibt's mehrere Möglichkeiten: +<ul> +<li> +Sie können im <a href="sourcecode.html">Quellcode-Fenster</a> in den +"aktiven Bereich" am linken Ende der Zeile klicken.</li> + +<li> +Sie können im Quellcode-Fenster eine Zeile auswählen und dann +im Menü <i>Haltepunkt</i> eine Auswahl treffen.</li> + +<li> +Sie können einen Haltepunkt in der <a href="breakptlist.html">Liste +der Haltepunkte</a> setzen.</li> +</ul> +Wenn Sie keinen Haltepunkt setzen können, könnte es sein, dass +das Programm gerade läuft. Sie können keine Haltepunkte setzen, +solange das Programm läuft. Halten Sie es zuerst mit <i>Ausführung|Unterbrechen</i> +an. Falls Sie dann noch immer keine Haltepunkte setzen können, versichern +Sie sich, dass Sie das Programm mit Debug-Information übersetzt <i>und +gebunden</i> haben. +<h4> +... den Wert einer globalen Variablen oder eines beliebigen Ausdrucks anzeigen?</h4> +Benutzen Sie das <a href="watches.html">Ausdrücke-Fenster</a>. +<h4> +... Watchpoints setzen?</h4> +Watchpoints können über die <a href="breakptlist.html">Liste +der Haltepunkte</a> bearbeitet werden. +<h4> +... einen Core-Dump benutzen?</h4> +Laden Sie zuerst das Programm mittels <i>Datei|Programm</i>, dann geben +Sie den Core-Dump mittels <i>Datei|Core dump</i> an. +<h4> +... ein Programm debuggen, das sich in eine Endlosschleife verlaufen hat?</h4> +Starten Sie das Programm und lassen Sie es laufen, bis es in die Endlosschleife +gelangt. Dann schalten Sie um zu KDbg und wählen <i>Ausführung|Unterbrechen</i>. +Hiermit haben Sie das Programm <i>in flagranti</i> erwischt! +<h4> +... erreichen, dass das Programm einigemale über einen Haltepunkt +drüberläuft, ohne anzuhalten?</h4> +In der <a href="breakptlist.html">Liste der Haltepunkte</a> wählen +Sie den Haltepunkt; dann klicken Sie <i>Bedingt</i> und geben die Anzahl +in <i>Ignoriere nächste Treffer</i> an. +<h4> +... eine Umgebungsvariable für das Programm setzen?</h4> +Wählen Sie <i>Ausführung|Argumente</i> und geben die Umgebungsvariable +im <a href="argspwdenv.html#Environment">Argumente-Dialog</a> an. +<h4> +... ein Arbeitsverzeichnis für das Programm wählen?</h4> +Wählen Sie <i>Ausführung|Argumente</i> und geben das Arbeitsverzeichnis +im <a href="argspwdenv.html#Environment">Argumente-Dialog</a> an. +<h4> +... das Terminal-Fenster los werden?</h4> +Wählen Sie <i>Datei|Einstellungen</i> und schalten auf das Register +<a href="pgmsettings.html#output">Ausgabe</a> +um. Wählen Sie <i>Nur Ausgabe, einfache Terminalemulation</i> und +klicken Sie <i>OK</i>. Nun müssen Sie das Programm neu laden (am einfachsten +wählen Sie es aus der Liste unter <i>Datei|Zuletzt geöffnete +Programme</i>). Die Programmausgaben werden nun in das eingebaute <a href="pgmoutput.html">Ausgabefenster</a> +geschrieben und stdin ist auf <tt>/dev/null</tt> umgeleitet. +<p>Sie müssen diese Einstellungen für jedes neue Programm wiederholen, +das Sie debuggen. +<p><b><i>Wichtig:</i></b> Sie sollten dies nicht tun, falls Ihr Programm +Eingaben vom Terminal (normalerweise stdin) erwartet oder falls mehr als +nur einfache Terminalemultionen benötigt werden (mehr als nur Wagenrücklauf +und Zeilenvorschub). Das eingebaute Ausgabefenster unterstützt keine +Eingaben oder Terminalemulationen. +</body> +</html> diff --git a/doc/de/index.html b/doc/de/index.html new file mode 100644 index 0000000..5a69b7e --- /dev/null +++ b/doc/de/index.html @@ -0,0 +1,190 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> + +<h1> +KDbg - Benutzerhandbuch</h1> + +<h2> +Inhalt</h2> + +<ul> +<li> +<a href="#Introduction">Einleitung</a></li> + +<li> +<a href="#UsingKDbg">Mit KDbg arbeiten</a></li> + +<li> +<a href="#InfoWindows">Die Informationsfenster von KDbg</a></li> + +<li> +<a href="#TipsTricks">Tipps und so weiter</a></li> + +<li> +Für Fortgeschrittene: <a href="../../en/kdbg/types.html">Typentabellen</a> +(nur Englisch)</li> + +<li> +<a href="#KnownProblems">Bekannte Probleme</a></li> + +<li> +<a href="#Author">Autor</a></li> +</ul> + +<hr> +<h2> +<a NAME="Introduction"></a>Einleitung</h2> +KDbg ist eine grafische Benutzeroberfläche für <tt>gdb</tt>, +den GNU-Debugger. +<p>Das bedeutet, dass KDbg selbst nicht der Debugger ist. Vielmehr kommuniziert +KDbg mit <tt>gdb</tt>, indem Befehlszeilen and diesen geschickt werden +und die Ausgabe, wie z.B. Variablenwerte, entgegengenommen werden. Die +Menübefehle und Mausklicks werden in <tt>gdb</tt>-Befehle umgesetzt, +und die Ausgabe von <tt>gdb</tt> wird in (mehr oder weniger) sichtbare +Information umgesetzt, wie zum Beispiel die Struktur von Variablen. +<p>Eine Folge davon ist, dass KDbg vollständig von den Fähigkeiten +des verwendeten Befehlszeilendebuggers, <tt>gdb</tt>, abhängig ist. +KDbg kann nicht mehr als <tt>gdb</tt> leisten. Wenn Sie zum Beispiel einen +<tt>gdb</tt> +haben, der Programme mit Threads nicht unterstützt, dann kann auch +KDbg das nicht (obwohl ein Threads-Fenster vorhanden ist). +<h2> +<a NAME="UsingKDbg"></a>Mit KDbg arbeiten</h2> +Bevor Sie mit der Arbeit beginnen, sollten Sie die <a href="globaloptions.html">globalen +Einstellungen</a> prüfen, indem Sie <i>Datei|Globale Einstellungen</i> +aufrufen. +<h4> +Ein zu debuggendes Program angeben</h4> +Um ein Programm zu debuggen, wählen Sie <i>Datei|Programm</i>. Wenn +Sie das Programm schon einmal debuggt haben, können Sie es auch aus +der Liste unter <i>Datei|Zuletzt göffnete Programme</i> wählen. +Das Programm wird jetzt geladen. +<p>Wenn Sie einen Core-Dump verwenden wollen, müssen Sie zuerst das +Programm, das den Core-Dump erzeugt hat wie gerade erwähnt laden, +dann wählen Sie <i>Datei|Core dump</i> aus dem Menü. KDbg zeigt +die Stelle an, die den Core-Dump verursacht hat. +<p>Sie können nun Haltepunkte setzen, indem Sie die Einträge +im Menü <i>Haltepunkt</i> oder im Rechte-Maus-Menü oder in der +<a href="breakptlist.html">Liste +der Haltepunkte</a> verwenden. +<p>Sie können auch <a href="pgmsettings.html">programmspezifische +Einstellungen</a> vornehmen, indem Sie <i>Datei|Einstellungen</i> wählen. +<h4> +Das Programm ausführen</h4> +Nun führen Sie das Programm aus, indem Sie <i>Ausführung|Ausführen</i> +wählen. Das Programm arbeitet nun wie gewöhnlich, bis es beendet +wird, auf einen Haltepunkt oder Watchpoint trifft, oder ein Signal empfängt. +<p>Sie können das Programm mit Argumenten ausführen, ein Arbeitsverzeichnis +festlegen und auch Umgebungsvariablen definieren. Dazu wählen Sie +<i>Ausführung|Argumente</i> +und machen Ihre Angaben im <a href="argspwdenv.html">Programmargumente-Dialog</a>. +<p>Weiters können Sie sich in ein Programm einhängen (<i>attachen</i>), +das bereits ausgeführt wird. Dazu laden Sie das Programm zuerst wie +oben beschrieben, dann wählen Sie <i>Ausführung|Attachen</i>. +Geben Sie die Prozessnummer an und klicken Sie <i>OK</i>. Das Programm +wird jetzt angehalten (aber nicht beendet), und der derzeitige Stand des +Programms wird im <a href="sourcecode.html">Quellcode-Fenster</a> angezeigt. +<h4> +Das Programm wurde angehalten - was nun?</h4> +Wenn das Programm an einem Haltepunkt, Watchpoint oder wegen eines Signals +angehalten wird, zeigt das <a href="sourcecode.html">Quellcode-Fenster</a> +die Zeile, in der das Programm gerade arbeitete. Es passiert häufig, +dass das Programm wegen eine Signals (oftmals <tt>SIGSEGV</tt>, Speicherzugriffsfehler) +in einer Funktion angehalten wird, die sich nicht in jenem Programmteil +befindet, den Sie geschrieben haben. In diesem Fall betrachten Sie das +<a href="stack.html">Stack-Fenster</a> +genauer: Suchen Sie nach einer Funktion, die Sie geschrieben haben (beginnen +Sie am oberen Ende) und klicken Sie darauf. Das bringt Sie an eine Stelle, +an der Sie mit der Suche nach dem tatsächlichen Programmfehler beginnen +können. +<p>Im Menü <i>Ausführung</i> finden Sie Befehle, die Sie zum +Ausführen und schrittweisen Abarbeiten des Programms verwenden. Weiters +können Sie das laufende Programm unterbrechen. Die wichtigen Befehle +können auch mit Funktionstasten gegeben werden. Zum effizienten Arbeiten +empfehle ich, dass Sie sich diese Tasten eingewöhnen. +<br><font size=-1>Diese Funktionen sind nicht konfigurierbar, aber vielleicht +wollen Sie ein Stückchen Code beisteuern, mit dem das geht?</font> +<p>Im Menü <i>Haltepunkt</i> finden Sie Befehle zum Setzen, Entfernen, +Aktivieren und Inaktivieren von permanenten und temporären Haltepunkten. +Natürlich können Sie auch eine <a href="breakptlist.html">Liste +der Haltepunkte</a> anzeigen. Sie können einen Haltepunkt auch setzen, +indem Sie mit der Maus in den Freiraum links der entsprechenden Quellcode-Zeile +klicken (mit der linken Maustaste); weiters können sie einen vorhandenen +Haltepunkt mit der mittleren Maustaste aktivieren und deaktivieren. +<p>Das Zahnrad in der Werkzeugleiste zeigt an, ob <tt>gdb</tt> gerade arbeitet: +Dies ist der Fall, wenn es rotiert. Solange es schnell rotiert, nimmt KDbg +kein Eingaben an; wenn es langsam rotiert, aktualisiert KDbg gerade alle +Variablenanzeigen. +<h2> +<a NAME="InfoWindows"></a>Die Informationsfenster von KDbg</h2> +KDbg zeigt Information in einer Reihe verschiedener Fenster an. Im Menü +<i>Ansicht</i> +finden Sie die Befehle, die diese Fenster anzeigen und schliessen. Es handelt +sich dabei um <i>dockende</i> Fenster, sodass Sie deren Anordnung beliebig +verändern können. +<ul> +<li> +<a href="sourcecode.html">Das Quellcode-Fenster</a></li> + +<li> +<a href="localvars.html">Lokale Variablen</a></li> + +<li> +<a href="stack.html">Der Programm-Stack</a></li> + +<li> +<a href="watches.html">Ausdrücke (<i>Watches</i>)</a></li> + +<li> +<a href="breakptlist.html">Die Liste der Haltepunkte</a></li> + +<li> +<a href="pgmoutput.html">Das Programmausgabefenster</a></li> + +<li> +<a href="registers.html">Die Registerinhalt</a></li> + +<li> +<a href="memory.html">Der Speicherinhalt</a></li> + +<li> +<a href="threads.html">Die Programm-Threads</a></li> +</ul> + +<h2> +<a NAME="TipsTricks"></a>Tipps und so weiter</h2> + +<ul> +<li> +<a href="tips.html">Tipps</a></li> + +<li> +<a href="howdoi.html">Wie kann ich...?</a></li> +</ul> + +<h2> +<a NAME="KnownProblems"></a>Bekannte Probleme</h2> +<tt>gdb </tt>4.16 hat Probleme bei der Handhabung von C++-Klassen mit virtuellen +Basisklassen. (Diese kommen häufig in CORBA-Programmen vor.) Gdb stürzt +dabei häufig aufgrund eines Speicherzugriffsfehlers ab. KDbg erkennt, +wenn <tt>gdb</tt> unerwartet beendet wird. Leider lässt sich nicht +wirklich was dagegen unternehmen. Sie müssen <tt>gdb</tt> mittels +<i>Datei|Programm</i> +neu starten, das heißt auch für die Debug-Sitzung zurück +an den Start :-(. +<p>Die Typerkennung von KDbg arbeitet nur, wenn die Bibilotheken dynamisch +ins Programm gebunden sind. +<h2> +<a NAME="Author"></a>Autor</h2> +KDbg wurde von <a href="mailto:j6t@kdbg.org">Johannes Sixt</a> +mit vielen weiteren Helfern geschrieben. +<br>Die KDbg-Homepage befindet sich unter <a href="http://www.kdbg.org/">http://www.kdbg.org/</a>. +</body> +</html> diff --git a/doc/de/localvars.html b/doc/de/localvars.html new file mode 100644 index 0000000..8b1d36c --- /dev/null +++ b/doc/de/localvars.html @@ -0,0 +1,25 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.18-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Lokale Variablen</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Lokale Variablen</h1> +Mittels <i>Ansicht|Lokale Variablen</i> wird das Fenster für die lokalen +Variablen angezeigt. Darin wird der Inhalt der lokalen Variablen des aktiven +Stack-Frames angezeigt. +<p>Das im <a href="stack.html">Stack-Fenster</a> ausgewählte Frame +bestimmt die lokalen Variablen, die hier angezeigt werden. +<p>Sobald das Programm angehalten wird (z.B. durch einen Haltepunkt), wird +die Anzeige aktualisiert. Variablenwerte, die sich seit dem letzten Anhalten +geändert haben, werden rot hervorgehoben. +<p>Sie können die ausgewählte Variable oder Struktur-Member in +das <a href="watches.html">Ausdrückefenster</a> kopieren, indem Sie +mittels der rechten Maustaste das kleine Kontextmenü aufrufen. +</body> +</html> diff --git a/doc/de/memory.html b/doc/de/memory.html new file mode 100644 index 0000000..06a2a5e --- /dev/null +++ b/doc/de/memory.html @@ -0,0 +1,29 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Speicherinhalt</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Der Speicherinhalt</h1> +Das Fenster zur Anzeige des Speicherinhalts können Sie mittels <i>Ansicht|Speicher</i> +aufrufen. Es zeigt den Inhalt des Speichers des Programms an beliebigen +Adressen an. +<p>Um Speicherinhalt anzuzeigen, geben Sie eine Adresse an. Die Adresse +braucht nicht in Hexadezimalform eingegeben werden und es kann sich auch +um einen beliebigen Ausdruck handeln. +<p>Sie können ein Format wählen, wie der Speicherinhalt dargestellt +werden soll, indem Sie die entsprechenden Optionen im Rechte-Maus-Menü +wählen. +<p>Die zuletzt verwendeten Adressen werden zwischengespeichert und können +über die Popup-Liste ausgewählt werden. Bitte beachten Sie, dass +zusammen mit der Adresse auch das Darstellungsformat gespeichert wird. +<p>Wenn Sie keinen Speicherinhalt ansehen wollen, empfehlen wir, dass Sie +die Adresse löschen, damit kein Speicherinhalt angezeigt wird - dadurch +arbeitet KDbg etwas schneller. +</body> +</html> diff --git a/doc/de/pgmoutput.html b/doc/de/pgmoutput.html new file mode 100644 index 0000000..65cf563 --- /dev/null +++ b/doc/de/pgmoutput.html @@ -0,0 +1,52 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Programmausgabe</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Das Programmausgabefenster</h1> +Das Programmausgabefenster wird mit <i>Ansicht|Ausgabe</i> geöffnet. +Das Ausgabefenster zeichnet den Text auf, den das Programm auf <tt>stdout</tt> +und <tt>stderr</tt> ausgibt. +<p>Das Ausgabefenster lässt keine Eingabe zu und unterstützt +nur eine äußerst minimale Terminalemulation: Lediglich <tt>\n</tt> +(Zeilenvorschub, line-feed), <tt>\t</tt> (horizontaler Tabulator) und +<tt>\r</tt> (Wagenrücklauf, carriage-return) werden behandelt. +Das reicht im Allgemeinen für Programme mit grafischer Benutzeroberfläche +aus, die nur Debug-Ausgaben schreiben. +<p>Wenn ein Programm zum ersten Mal in KDbg geladen wird, wird dieses Ausgabefenster +<i>nicht</i> benutzt. Der Grund dafür ist, dass KDbg nicht wissen +kann, ob das Programm eine ausgefeilte Terminalemulation benötigt +oder ob es Eingaben über das Terminal erwartet. Deshalb wird standardmässig +ein Terminalemulator verwendet. Um die Ausgaben in das Ausgabefenster umzuleiten, +gehen sie wie folgt vor: +<ol> +<li> +Rufen Sie mittels <i>Datei|Einstellungen</i> die <a href="pgmsettings.html">programmspezifischen +Einstellungen</a> auf.</li> + +<li> +Schalten Sie auf das Register <i>Ausgabe</i> um.</li> + +<li> +Wählen Sie <i>Nur Ausgabe, einfache Terminalemulation</i> und klicken +Sie <i>OK</i>.</li> + +<li> +Laden Sie das Programm erneut, indem Sie es aus der Liste unter <i>Datei|Zuletzt +geöffnete Programme</i> wählen.</li> +</ol> +Sie können den Inhalt des Fensters jederzeit löschen, indem Sie +<i>Löschen</i> aus dem Popup-Menü wählen, das Sie mit der +rechten Maustaste aufrufen können. +<p>Falls die letzte Zeile des Ausgabefensters sichtbar ist, verschiebt +sich der Fensterinhalt automatisch, sodass die letzte Zeile immer sichtbar +bleibt, wenn neuer Text ankommt. Wenn Sie hingegen den Fensterinhalt verschieben, +sodass die letzte Zeile nicht sichtbar ist, bleibt der sichtbare Teil unverändert. +</body> +</html> diff --git a/doc/de/pgmsettings.html b/doc/de/pgmsettings.html new file mode 100644 index 0000000..b6a163e --- /dev/null +++ b/doc/de/pgmsettings.html @@ -0,0 +1,83 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <title>KDbg - Benutzerhandbuch - Programmspezifische Einstellungen</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Programmspezifische Einstellungen</h1> +In diesem Dialog können programmspezifischen Einstellungen getroffen +werden. Der Dialog wird mittels <i>Datei|Einstellungen</i> aufgerufen. +Die Einstellungen werden nur auf das geladene Programm angewendet und bleiben +über Sitzungen hinweg erhalten. +<blockquote><b><i>Wichtiger Hinweis:</i></b> Die getroffenen Einstellungen +werden erst wirksam, wenn das Programm das <i>nächste Mal geladen</i> +wird. Das bedeutet, dass Sie nach dem Drücken von OK in diesem Dialog +das Programm erneut laden müssen (mittels <i>Datei|Programm</i>)!!</blockquote> + +<ul> +<li> +<a href="#driver">Debugger</a></li> + +<li> +<a href="#output">Ausgabe</a></li> +</ul> + +<h2> +<a NAME="driver"></a>Debugger</h2> +Hier kann der Debugger gewählt werden, der für dieses Programm +verwendet werden soll. +<h4> +Aufruf von GDB</h4> + +<blockquote>Geben Sie den Befehl an, mit dem <tt>gdb</tt> aufgerufen werden +soll. Wenn Sie das Feld leer lassen, wird die <a href="globaloptions.html">globale +Einstellung</a> übernommen. Wenn Sie cross-compilieren oder remote +debuggen, werden Sie hier einen <tt>gdb</tt>-Befehl angeben, der für +die Zielplattform geeignet ist. Die Standardeinstellung ist <tt>gdb --fullname --nx</tt>. +Sie müssen auf jeden Fall auch diese Optionen angeben, andernfalls +funktioniert KDbg nicht.</blockquote> + +<h2> +<a NAME="output"></a>Ausgabe</h2> +Hier geben Sie an, unter welcher Terminalemulation das Programm arbeitet. +<h4> +Keine Ein- und Ausgabe</h4> + +<blockquote>Wählen Sie diese Option, falls Ihr Programm keine Eingabe +vom Terminal erwartet und Sie keine Ausgabe sehen wollen, die auf <tt>stdout</tt> +oder <tt>stderr</tt> geschrieben wird. Alle drei Standardkanäle (<tt>stdin</tt>, +<tt>stdout</tt> +und <tt>stderr</tt>) werden praktisch nach <tt>/dev/null</tt> umgeleitet.</blockquote> + +<h4> +Nur Ausgabe, einfache Terminalemulation</h4> + +<blockquote>Wählen Sie diese Option, falls Ihr Programm keine Eingabe +vom Terminal erwartet (<tt>stdin</tt> wird nach <tt>/dev/null</tt> umgeleitet) +und die Ausgabe, die auf <tt>stdout</tt> und <tt>stderr</tt> geschrieben +wird, keine besondere Terminalemulation erfordert. Die Ausgabe wird im +<a href="pgmoutput.html">Ausgabefenster</a> +angezeigt. +<br><i>Wichtig:</i> Die eingebaute Terminalemulation interpretiert nur +den Zeilenvorschub <tt>\n</tt> (line-feed, ASCII 10) als Zeilenumbruch. +Das Zeichen für den Wagerücklauf <tt>\r</tt> (carriage-return, +ASCII 13) wird <i>nicht</i> behandelt. Das ist ausreichend für Debug-Ausgaben, +wie sie häufig beim Programmierern grafischer Benutzeroberflächen +verwendet wird.</blockquote> + +<h4> +Volle Terminalemulation</h4> + +<blockquote>Wählen Sie diese Option, falls Ihr Programm Eingaben über +<tt>stdin</tt> +liest oder falls die Ausgabe auf <tt>stdout</tt> oder <tt>stderr</tt> Terminalemulation +erfordert. Ein Terminalemulator kann in den <a href="globaloptions.html">globalen +Einstellungen</a> angegeben werden.</blockquote> + +</body> +</html> diff --git a/doc/de/registers.html b/doc/de/registers.html new file mode 100644 index 0000000..2d99bcb --- /dev/null +++ b/doc/de/registers.html @@ -0,0 +1,37 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Registerinhalt</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Der Registerinhalt</h1> +Das Fenster zur Anzeige des Registerinhalts wird mittels <i>Ansicht|Register</i> +angezeigt. Jedesmal, wenn das Programm angehalten wird, zeigt Kdbg hier +den Inhalt der CPU-Register an. +<p>Das Fenster ist in 3 Spalten aufgeteilt: +<ol> +<li> +Die Spalte <i>Register</i> zeigt die Namen der Register.</li> + +<li> +Die Spalte <i>Wert</i> zeigt den Inhalt der Register in einer mehr oder +weniger rohen Form an. Diese rohe Form wird üblicherweise in Hexadezimaldarstellung +angezeigt, selbst der Inhalt der Fließkommaregister.</li> + +<li> +Die Spalte <i>Dekodierter Wert</i> zeigt den Inhalt der Register in dekotierter +Form an. Bei den arithmetischen Registern ist das meist eine vorzeichenbehaftete +Dezimalzahl, bei Fließkommaregistern wird die Fließkommazahl +angezeigt, die Flag-Register werden manchmal die gesetzten Flags in Worten +dargestellt (hängt von der verwendeten Version von <tt>gdb</tt> ab).</li> +</ol> +Durch Klicken mit der rechten Maustaste können Sie ein Kontextmenü +aufrufen, über das Sie die Darstellung der Werte in der zweiten Spalte +wählen können. +</body> +</html> diff --git a/doc/de/sourcecode.html b/doc/de/sourcecode.html new file mode 100644 index 0000000..56b462f --- /dev/null +++ b/doc/de/sourcecode.html @@ -0,0 +1,30 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Quellcode</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Das Quellcode-Fenster</h1> +Das Quellcode-Fenster ist das Hauptfenster und ist immer sichtbar. +<p>Das Quellcode-Fenster zeigt den Quellcode von Programmen an. Am linken +Rand jeder Zeile befindet sich ein "aktiver Bereich". Dort wird ein mit +einem Pfeil angezeigt, an welcher Stelle das Programm gerade ausgeführt +wird. Weiters wird hier angezeigt, an welchen Stellen Haltepunkte gesetzt +sind. +<p>Neue Haltepunkte können gesetzt werden, indem Sie mit der linken +Maustaste in den aktiven Bereich klicken. Mit der mittleren Maustaste können +Sie vorhandene Haltepunkte aktivieren und deaktivieren. +<p>Das kleine Pluszeichen '+' zwischen dem "aktiven Bereich" und der Quellcodezeile +zeigt den Assembler-Code der Quellcodezeile an, wenn Sie darauf klicken. +Dabei wird das Zeichen zu einem Minus '-', das den Assemblercode wieder +verbirgt, wenn Sie darauf klicken. +<p>Meistens werden Quellcode-Dateien automatisch geöffnet. Sie können +Dateien manuell öffnen, indem Sie <i>Datei|Quellcode öffnen</i> +wählen oder <i>Quellcode öffnen</i> aus dem Rechte-Maus-Menü. +</body> +</html> diff --git a/doc/de/stack.html b/doc/de/stack.html new file mode 100644 index 0000000..ae6e576 --- /dev/null +++ b/doc/de/stack.html @@ -0,0 +1,25 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Stack</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Das Stack-Fenster</h1> +Das Stack-Fenster wird mittels <i>Ansicht|Stack</i> angezeigt. Hierin wird +der Call-Stack (Backtrace, Stack-Frames) angezeigt, d.h. die Funktionen, +die das Programm im Augenblick betreten und noch nicht verlassen hat. +<p>Das innerste Frame (in dem sich das Programm gerade befindet) befindet +sich an erster Stelle. +<p>Sie können in ein anderes Stack-Frame umschalten, indem Sie einfach +auf die entsprechende Zeile klicken. Das <a href="sourcecode.html">Quellcode-Fenster</a> +zeigt die Stelle an, in der der Aufruf in das nächst-innere Frame +stattfand; die Anzeige der <a href="localvars.html">lokalen Variablen</a> +und die <a href="watches.html">Ausdrücke</a> werden umgeschaltet, +sodass die lokalen Variablen des gewählten Frames angezeigt werden. +</body> +</html> diff --git a/doc/de/threads.html b/doc/de/threads.html new file mode 100644 index 0000000..924eea4 --- /dev/null +++ b/doc/de/threads.html @@ -0,0 +1,44 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Threads</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Die Programm-Threads</h1> +Das Fenster mit der Liste der Programm-Threas wird mittels <i>Ansicht|Threads</i> +aufgerufen. Dieses Fenster listet die aktiven Threads des Programms auf. +<p><b><i>Wichtig:</i></b> Das Debuggen von Programm-Threads muss von der +verwendeten <tt>gdb</tt>-Version unterstützt werden - es handelt sich +hierbei nicht um ein Feature von KDbg. Für Linux-Systeme (i386) funktioniert +<tt>gdb5</tt> +am besten. +<p>Der Inhalt des Fensters wird jedesmal erneuert, wenn das Programm vom +Debugger angehalten wird. (Das heisst, dass <i>nicht</i> der aktuelle Zustand +des Programms angezeigt wird, während es läuft.) +<p>Die erste Spalte zeigt die Thread-ID an, die zweite Spalte zeigt die +Stelle, an der der Thread gerade abgearbeitet wird. +<p>Die Markierung am Zeilenanfang benennt den <i>aktiven</i> Thread: +<ul> +<li> +Das <a href="stack.html">Stack-Fenster</a> zeigt den Call-Stack des +aktiven Threads.</li> + +<li> +Das <a href="localvars.html">Fenster mit den lokalen Variablen</a> zeigt +die lokalen Variablen des aktiven Threads.</li> + +<li> +Das <a href="watches.html">Ausdrücke-Fenster</a> verwendet zur Evaluierung +der Ausdrücke die lokalen Variablen des aktiven Threads.</li> +</ul> +Indem Sie auf einen Thread klicken, wechseln Sie den aktiven Thread und +die genannten Fenster werden entsprechend auf den aktuellen Stand gebracht. +Ausserdem schaltet das <a href="sourcecode.html">Quellcode-Fenster</a> +zu der Programmstelle um, an der der aktive Thread angehalten wurde. +</body> +</html> diff --git a/doc/de/tips.html b/doc/de/tips.html new file mode 100644 index 0000000..f27e5a3 --- /dev/null +++ b/doc/de/tips.html @@ -0,0 +1,45 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.74 [en] (X11; U; Linux 2.2.16-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Tipps</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h2> +Tipps und Tricks</h2> + +<ul> +<li> +Setzen Sie immer die Umgebungsvariable <tt>LD_BIND_NOW=1</tt> auf glibc2-Systems. +Wie Umgebungsvariablen gesetzt werden, wird <a href="argspwdenv.html#Environment">hier +erklärt</a>.</li> + +<li> +Sie können Haltepunkte als Lesezeichen verwenden: Setzen Sie einfach +einen Haltepunkt und deaktivieren Sie diesen. Später können Sie +rasch an die entsprechende Stelle zurückkehren, indem Sie in der Liste +der Haltepunkte doppel-klicken (oder <i>Code anzeigen</i> klicken). +Da sich KDbg alle Haltepunkte über Sitzungen hinaus merkt, werden +sie sofort wieder gesetzt, sobald sie das entsprechende Programm das nächste +Mal debuggen.</li> + +<li> +Auf folgende Weise können Sie Programmvariablen ändern: Im Watch-Bereich +(rechts unten) geben Sie eine Zuweisung ein, z.B. <tt>var.member=17</tt> +und Klicken <i>Neu</i>. Die entsprechende Variable wird sofort geändert. +Sie sollten die Variable nun sofort löschen (indem Sie sie auswählen +und <i>Entf</i> klicken). Das ist notwendig, weil der Ausdruck (d.h die +Zuweisung) sonst bei jedem Programmstopp ausgewertet wird.</li> + +<li> +Sie können Werte im Watch-Bereich in den verschiedenen Formaten anzeigen +lassen, die gdb versteht. Z.B. zeigt <tt>/x var.member</tt> die Variable +<tt>var.member</tt> +in hexadezimaler Notation an.</li> +</ul> + +</body> +</html> diff --git a/doc/de/watches.html b/doc/de/watches.html new file mode 100644 index 0000000..8de3d4b --- /dev/null +++ b/doc/de/watches.html @@ -0,0 +1,27 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="GENERATOR" content="Mozilla/4.76 [en] (X11; U; Linux 2.2.18-SMP i686) [Netscape]"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Benutzerhandbuch - Ausdrücke</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Inhalt</a> +<h1> +Ausdrücke (Watches)</h1> +Das Watches-Fenster wird mittels <i>Ansicht|Ausdrücke</i> angezeigt. +Dieses zeigt beliebige Ausdrücke an (diese bezeichnet man auch als +<i>Watches</i>). +<p>Ein neuer Ausdruck wird hinzugefügt, indem dieser im Eingabefeld +eingegeben wird und dann auf <i>Neu</i> geklickt wird. Um einen Ausdruck +zu entfernen, klicken Sie diesen an (an der Wurzel des entsprechenden Baums) +und klicken dann auf <i>Entf</i>. +<p>Sie können auch eine Variable oder einen Struktur-Member aus dem +<a href="localvars.html">Lokale-Variablen-Fenster</a> herüberkopieren, +indem Sie das dortige Kontextmenü zuhilfe nehmen. +<p>Die eingegeben Ausdrücke werden zwischen Sitzungen gespeichert. +Wir empfehlen, Ausdrücke zu entfernen, die nicht mehr benötigt, +weil das die Arbeitsgeschwindigkeit von KDbg steigert. +</body> +</html> diff --git a/doc/en/argspwdenv.html b/doc/en/argspwdenv.html new file mode 100644 index 0000000..22482f0 --- /dev/null +++ b/doc/en/argspwdenv.html @@ -0,0 +1,42 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Arguments, Environment</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +Specifying program arguments, working directory, environment variables</h1> +<p>Choose <i>Execution|Arguments</i> to open a dialog where you can set program +arguments, the working directory for your program, and environment variables.</p> +<h2><a name="PgmArgs"></a>Tab Arguments</h2> +<p>In the edit box enter the arguments that shall be passed on to your +program. <i>Insert file name</i> lets you browse for a file; +the file name will be <em>inserted</em> in the edit box (at the cursor position).</p> +<p>Next time the program is started, the new arguments will be used.</p> +<h2><a name="WorkingDir"></a>Tab Working Directory</h2> +<p>In the edit box you can specify the working directory for your program. +<i>Browse</i> lets you browse for a directory. +Your program will use the new directory only when it is run the next time.</p> +<p>The working directory also applies to gdb itself! The directory that +you specify will be passed to gdb immediately, i.e. gdb will work with +the new setting as soon as you press <i>OK</i>. This can influence whether +source code files are found.</p> +<h2><a name="Environment"></a>Tab Environment</h2> +<p>In the Environment tab you can set environment variables that the program +sees in addition to those that it inherits. +In the edit box type in an expression of the form <tt>VARIABLE=value</tt> +to set the environment variable <tt>VARIABLE</tt> to the value <tt>value</tt>, +and click <i>Modify</i>. To remove a variable, select it from the list +below and click <i>Delete</i>. To change the value, edit the value in the +edit field and click <i>Modify</i>. If you change the name of the variable +and click <i>Modify</i>, you add a new variable! The new environment variables +will be used by your program the next time it is run.</p> +<h2>Tab xsldbg Settings</h2> +<p>This tab is only available when a <a href="xslt.html">XSLT script is +debugged</a>. Here you can specify various flags that influence the +XSL translation and XSLDBG.</p> +</body> +</html> diff --git a/doc/en/breakptlist.html b/doc/en/breakptlist.html new file mode 100644 index 0000000..fb1c18e --- /dev/null +++ b/doc/en/breakptlist.html @@ -0,0 +1,93 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Breakpoint list</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Breakpoint List</h1> +<p>The breakpoint list displays all breakpoints and watchpoints that are set +and allows you to manipulate them. It can be displayed using <i>View|Breakpoints</i>.</p> +<h2> +The list of breakpoints</h2> +<p>For each breakpoint the following is shown:</p> +<ul> +<li> +the breakpoint location,</li> + +<li> +the hit count,</li> + +<li> +the ignore count if set,</li> + +<li> +the condition if set.</li> +</ul> +<p>The icon in front of the entry indicates whether the breakpoint is enabled +(a red dot) or disabled (a bright red dot), whether the breakpoint is temporary +(a tiny clock is overlaid), whether the breakpoint is conditional (a +tiny question mark is overlaid), or whether the breakpoint is <em>orphaned</em> +(a 'x' is overlaid).</p> +<p>Watchpoints are indicated by an eye glas icon in front of the line.</p> +<h2> +<A name="orphanedbp"></A>Orphaned breakpoints</h2> +<p><em>Orphaned breakpoints</em> are breakpoints that gdb cannot implant +immediately. Orphaned breakpoints occur if you try to set a breakpoint in a file +that is not part of the executable. In particular, this is the case if the file +belongs to a shared library or dynamically loaded module: When the executable +is loaded, gdb does not yet know about dynamic modules and, hence, cannot set +breakpoints there. However, KDbg does not forget about requests to set +breakpoints in dynamic modules: It tries to set orphaned breakpoints each time +that the program stops. When the breakpoint can be set successfully, it turns +into a normal breakpoint.</p> +<p>But there is an important consequence: Orphaned breakpoints are not effective, +and the program will <em>not</em> stop there. The remedy is to set a breakpoint +in the executable at the earliest possible point after which it is known that +the dynamic module is loaded. For shared libraries this is usually in <tt>main()</tt> +and for dynamically loaded modules it is after the call to <tt>dlopen()</tt> +(or equivalent). When the program stops at this breakpoint the orphaned +breakpoints from the dynamic module are set and become effective.</p> +<h2> +Manipulating breakpoints</h2> +<p><a name="StopProg"></a>It is important to note that breakpoints and watchpoints +cannot be manipulated while the program is running. If the program has +already been started, it must stop first - either by hitting a breakpoint +that is already set or forcefully by choosing <i>Execution|Break</i>. Note +that this will not terminate the program, it just interrupts it. You can +now manipulate the breakpoints; then choose <i>Execution|Continue</i> to +let the program continue.</p> +<p>To set a breakpoint on a specific source line, it is easiest to do this +in the source code window. If you don't know the exact file and line number +of a function, you can set the breakpoint by typing the function name in +the edit box above the list and click <i>Add Breakpoint</i>.</p> +<p>You can disable and enable breakpoints by selecting them in the list +and clicking <i>Disable</i> or <i>Enable</i>. Or you simply click on the +breakpoint in the list using the middle mouse button - just like you enable +and disable breakpoints in the source window.</p> +<p>You can set a condition on a breakpoint (so that the program is only +stopped if the condition is true) or set an ignore count (so that the program +is not stopped the next n times that the breakpoint is hit). To do that, +press the <i>Conditional</i> button and enter the condition and/or ignore +count.</p> +<h2> +Manipulating watchpoints</h2> +<p>Watchpoints are a like breakpoints, except that they interrupt the program +when the value of a memory location changes. As with breakpoints, watchpoints +cannot be manipulated while the program is running. See <a href="#StopProg">above</a> +for more information.</p> +<p>To set a watchpoint, type an expression in the edit box above the list, +then click <i>Add Watchpoint</i>. The program will stop when the value +of the expression changes. Note that watchpoints that involve local variables +can only be set when the program is stopped in a breakpoint (or has been +interrupted by <i>Execution|Break</i>).</p> +<p>To remove the watchpoint, select it from the list and click <i>Remove</i>. +If the expression involves a local variable, the watchpoint will be removed +automatically when the program leaves the current frame.</p> +<p>You can set a condition and an ignore count on the watchpoint just like +on breakpoints by selecting it and clicking <i>Conditional</i>.</p> +</body> +</html> diff --git a/doc/en/globaloptions.html b/doc/en/globaloptions.html new file mode 100644 index 0000000..52faaab --- /dev/null +++ b/doc/en/globaloptions.html @@ -0,0 +1,78 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Global Options</title> +</head> +<body text="#000000" bgcolor="#ffffff"> +<p><a href="index.html">Contents</a></p> +<h1> +Global Options Dialog</h1> +<p>To specify some global options, choose <i>Settings|Global Options</i>. You +can set the following:</p> +<ul> +<li> +the command by which gdb is invoked,</li> + +<li> +the command that opens a terminal for the program's output,</li> + +<li> +whether the KDbg shall pop into the foreground when the program stops and +a timeout when it shall go back again,</li> + +<li> +the tab width,</li> + +<li> +filters for source file names.</li> +</ul> + +<h4> +How to invoke gdb</h4> + +<blockquote>If you want to use a different version of gdb, you can specify +it under +<i>How to invoke GDB</i>. The default command is <tt>gdb --fullname +--nx</tt>. Be sure to also specify these options if you change the gdb +executable. If you leave them away, KDbg will not work. If you messed up +the entry, you can clear it to revert to the default setting.</blockquote> + +<h4> +How to invoke a terminal emulator</h4> + +<blockquote>If you want to use a different terminal program to show the +output of the program, specify it under <i>Terminal for program output</i>. +The default setting is <tt>xterm -name kdbgio -title %T -e sh -c %C</tt>. +In this entry, +<tt>%T</tt> will be replaced by a title string, <tt>%C</tt> +will be replaced by a Bourne shell script that loops infinitely so that +the terminal window doesn't close. (No, it doesn't use CPU, it calls <tt>sleep +3600</tt> in a loop :) An alternative for this setting could be <tt>konsole +--name kdbgio --caption %T -e sh -c %C</tt>.</blockquote> + +<h4> +Pop into foreground</h4> + +<blockquote>You can specify whether the KDbg window shall move itself into +the foreground as soon as the program being debugged stops (at a breakpoint +or due to a signal). The KDbg window is not activated, however (at least +under KWM, the KDE window manager). Some users may feel that this behavior +is intrusive, so this option is off by default.</blockquote> + +<blockquote>If this option is on, KDbg will also retreat itself into the +background when the program is continued by any command, but it does so +only after a timeout that can be specified. This avoids that the debugger +window flashes back and forth each time you click any of the <i>Step</i> +commands.</blockquote> + +<h4> +File filters</h4> + +<blockquote>You can specify wildcards for source files and header files, +which are used in the file dialog of the <i>File|Open Source</i> +command.</blockquote> + +</body> +</html> diff --git a/doc/en/howdoi.html b/doc/en/howdoi.html new file mode 100644 index 0000000..6191144 --- /dev/null +++ b/doc/en/howdoi.html @@ -0,0 +1,76 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - How Do I...?</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +How Do I...?</h1> + +<h4> +... set breakpoints?</h4> +<p>There's more than one way to set a breakpoint:</p> +<ul> +<li> +You can set it in the source window by clicking on the "active area" at +the far left of the line.</li> + +<li> +You can set it by selecting the line in the source window and choosing +an option from the <i>Breakpoint</i> menu.</li> + +<li> +You can set it in the <a href="breakptlist.html">breakpoint list</a>.</li> +</ul> +<p>If you can't set breakpoints, maybe the program is currently running. You +can't set breakpoints while the program is running. Stop it first using +<i>Execution|Break</i>. +If you still can't set breakpoints, make sure that you have compiled <em>and +linked</em> your program with debugging information enabled.</p> +<h4> +... display the value of a global variable or an arbitrary expression?</h4> +<p>Use the <A href="watches.html">Watch window</A>.</p> +<h4> +... set watchpoints?</h4> +<p>Watchpoints are manipulated in the <a href="breakptlist.html">breakpoint +list</a>.</p> +<h4> +... use a core dump?</h4> +<p>First load the executable using <i>File|Executable</i>, then specify the +core dump using <i>File|Core dump</i>.</p> +<h4> +... debug a program that's caught in an endless loop?</h4> +<p>Start the program and let it run until it is in the endless loop. Then +switch to KDbg and choose <i>Execution|Break</i>. You've just caught the +nasty program <em>in flagranti</em>!</p> +<h4> +... achieve that the program passes over a breakpoint a number of times +before it stops?</h4> +<p>In the <a href="breakptlist.html">breakpoint list</a> select the breakpoint; +then click <i>Conditional</i> and specify the number of times to skip the +breakpoint in the <i>Ignore count</i> field.</p> +<h4> +... set environment variables for the executable?</h4> +<p>Select <i>Execution|Arguments</i> and specify the environment variables +in the <a href="argspwdenv.html#Environment">program arguments dialog</a>.</p> +<h4> +... set a working directory for the executable?</h4> +<p>Select <i>Execution|Arguments</i> and specify the working directory in +the <a href="argspwdenv.html#WorkingDir">program arguments dialog</a>.</p> +<h4> +... get rid of this terminal window?</h4> +<p>Select <i>Settings|This Program</i> and switch to the <a href="pgmsettings.html#output">Output</a> tab. +Select <i>Only output, simple terminal emulation</i> and click <i>OK</i>. +Now restart the program (choose it from the list under <i>File|Recent Executables</i>). +The program output goes now to the built-in <a href="pgmoutput.html">output +window</a> and stdin is redirected to <tt>/dev/null</tt>.</p> +<p>You must do this for every new program that you debug.</p> +<p><b><i>Important:</i></b> You should not do this if your program expects +input from the terminal (usually stdin) or if its output requires nifty +terminal emulation (more than carriage-return and line-feed). The built-in +output window does not support input and terminal emulation.</p> +</body> +</html> diff --git a/doc/en/index.html b/doc/en/index.html new file mode 100644 index 0000000..454cd08 --- /dev/null +++ b/doc/en/index.html @@ -0,0 +1,185 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> + +<h1> +KDbg - User's Manual</h1> + +<h2> +Contents</h2> + +<ul> +<li> +<a href="#Introduction">Introduction</a></li> + +<li> +<a href="#UsingKDbg">Using KDbg</a></li> + +<li> +<a href="#InfoWindows">KDbg's information windows</a></li> + +<li> +<a href="#Tips">Tips and such</a></li> + +<li> +Advanced topic: <a href="types.html">Type tables</a></li> + +<li> +<a href="invocation.html">How to invoke KDbg from the command line</a></li> + +<li> +<a href="#Author">Author</a></li> +</ul> + +<hr> +<h2> +<a name="Introduction"></a>Introduction</h2> +<p>KDbg is a front-end for <tt>gdb</tt>, the GNU debugger.</p> +<p>This means that KDbg itself is not the debugger. Rather, it communicates +with <tt>gdb</tt>, a command line debugger, by sending commands to it and +receiving the output, such as variable values. The menu commands and mouse +clicks are translated into <tt>gdb</tt> commands, and the output of <tt>gdb</tt> +is translated into (more or less) visible information, such as structured +variable contents.</p> +<p>The upshot of all this is that KDbg completely relies on the capabilities +of the underlying command line debugger, <tt>gdb</tt>. KDbg can do no more +than <tt>gdb</tt> can. For example, if you have a <tt>gdb</tt> that does +not supports debugging of threaded programs, KDbg cannot, either (even +though it offers a threads window).</p> +<h2> +<a name="UsingKDbg"></a>Using KDbg</h2> +<p>Before you start using KDbg, you may want to review the options in the +<a href="globaloptions.html">Global Options</a> dialog that you invoke +with <i>Settings|Global Options</i>.</p> +<h4> +Specifying a debugging target</h4> +<p>To debug a program, choose <i>File|Executable</i> from the menu. If you +have debugged the program earlier, you can choose it from <i>File|Recent +Executables</i>. The program is loaded.</p> +<p>If you want to debug a core dump, you must first load the executable +that produced the core dump, then choose +<i>File|Core Dump</i> from the +menu. Now KDbg goes to the point in the program that caused the core dump.</p> +<p>You can now set breakpoints, using the <i>Breakpoint</i> menu, the right +mouse button menu, or the <a href="breakptlist.html">breakpoint window</a>.</p> +<p>You can also choose program specific settings that apply only to the +currently loaded executable using <i>Settings|This Program</i>, in the +<a href="pgmsettings.html">Program Settings</a> dialog.</p> +<p>Furthermore, it is possible to <a href="xslt.html">debug XSLT scripts</a>.</p> +<h4> +Running the program</h4> +<p>Now run the program by selecting <i>Execution|Run</i>. The program now +executes as usual until it either exits, hits a breakpoint or watchpoint, +or receives a signal.</p> +<p>You can run the program with arguments, set a working directory, or +set environment variables. To do this, choose <i>Execution|Arguments</i> +and specify your options in the <a href="argspwdenv.html">Program Arguments</a> +dialog (before you start the program).</p> +<p>You can also attach to a program that is currently running. To do this, +first load the executable file like above. Then choose <i>Execution|Attach</i>. +From the list processes specify the one you want to attach to +and click <i>OK</i>. The running program is +halted (not terminated), and the current point of execution is displayed +in the source window.</p> +<p><font size="-1">On some systems the list of processes may not be available. +In this case a simple edit box is available where the process number can be +specified.</font></p> +<h4> +The program stopped - now what?</h4> +<p>When the program stops at a breakpoint, watchpoint, or due to a signal, +the <a href="sourcecode.html">source code window</a> displays the line +where the program stopped. It is very common that the program stops due +to a signal (usually a <tt>SIGSEGV</tt>, segmentation violation) in a function +that is not part of the program, that you have written. In this case you +investigate the <a href="stack.html">stack window</a> and look for a function +that you have written (start at the top of the list) and click on it. This +will bring you to a location that you can start your search for the real +bug.</p> +<p>In the menu <i>Execution</i> you find the commands that you need to +run +the program, step through code, and to interrupt the program (<i>Break</i>) +while it is running. The important commands (<i>Run</i> and all kinds of +<i>Step</i>) are bound to function keys. For efficient debugging it is +strongly recommend that you get used to using them. You can use +<i>Settings|Configure Shortcuts</i> if you want to bind the functions +to different keys.</p> +<p>In the menu <i>Breakpoint</i> you find commands to set, clear, disable, +and enable permanent and temporary breakpoints. You can display a list +of breakpoints in the <a href="breakptlist.html">breakpoints window</a>. +You can also set a breakpoint by clicking at the left end of the source +line (using the left mouse button), and you can enable and disable a breakpoint +by clicking it using the middle mouse button.</p> +<p>The animation in the toolbar indicates whether the program +is running. It stops when the program stopped in a breakpoint or for +some other reason or when the program exited. This animated button is a shortcut +for <i>Execution|Break</i>.</p> +<h2> +<a name="InfoWindows"></a>KDbg's information windows</h2> +<p>KDbg displays information and accepts commands in number of different windows. +In the menu <i>View</i> you find commands to show and hide these windows. +They are docking windows, which means that you can drag them around and +arrange them in any manner you like.</p> +<ul> +<li> +<a href="sourcecode.html">The source code window</a></li> + +<li> +<a href="localvars.html">The local variables window</a></li> + +<li> +<a href="stack.html">The stack window</a></li> + +<li> +<a href="watches.html">The watched expressions window</a></li> + +<li> +<a href="breakptlist.html">The breakpoint list</a></li> + +<li> +<a href="pgmoutput.html">The output window</a></li> + +<li> +<a href="registers.html">The register dump window</a></li> + +<li> +<a href="memory.html">The memory dump window</a></li> + +<li> +<a href="threads.html">The threads window</a></li> +</ul> + +<h2> +<a name="Tips"></a>Tips and such</h2> +<p>The following topics give some useful hints on using KDbg.</p> +<ul> +<li> +<a href="tips.html">Tips and Tricks</a></li> + +<li> +<a href="howdoi.html">How do I...?</a></li> +</ul> + +<h2> +<a name="Author"></a>Author</h2> +<p>KDbg is written by <a href="mailto:j6t@kdbg.org">Johannes Sixt</a> +with contributions from these people (in no particular order):</p> +<ul> +<li>Keith Isdale</li> +<li>Ben Burton</li> +<li>Daniel Thor Kristjansson</li> +<li>Matthew Allen</li> +<li>Ron Lerech</li> +<li>Neil Butterworth</li> +<li>Thomas Sparr</li> +<li>Max Judin</li> +<li>Johnny Chan</li> +<li>Ilmar S. Habibulin</li> +</ul> +<p>KDbg homepage is at <a href="http://www.kdbg.org/">http://www.kdbg.org/</a>.</p> +</body> +</html> diff --git a/doc/en/invocation.html b/doc/en/invocation.html new file mode 100644 index 0000000..2f99dd0 --- /dev/null +++ b/doc/en/invocation.html @@ -0,0 +1,34 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Invocation</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1>Invoking KDbg from the command line</h1> +<p><pre> +Usage: kdbg [TQt-options] [KDE-options] [options] [program] [core] + +Generic options: + --help Show help about options + --help-qt Show TQt specific options + --help-kde Show KDE specific options + --help-all Show all options + --author Show author information + -v, --version Show version information + --license Show license information + -- End of options + +Options: + -t <file> transcript of conversation with the debugger + -r <device> remote debugging via <device> + -l <language> specify language: C, XSLT [] + -p <pid> specify PID of process to debug + +Arguments: + program path of executable to debug + core a core file to use +</pre></p></body> +</html> diff --git a/doc/en/localvars.html b/doc/en/localvars.html new file mode 100644 index 0000000..1461f70 --- /dev/null +++ b/doc/en/localvars.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Local Variables</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Local Variables Window</h1> +<p>The local variables window is opened using <i>View|Locals</i>. The local +variables window displays the contents of the local variables at the currently +selected stack frame.</p> +<p>The set of local variables that are displayed is determined by the stack +frame that is selected in the <A href="stack.html">stack window</A>.</p> +<p>Variable values that changed between stops of the program are displayed +in red color.</p> +<p>The values of most variables can be changed. For this purpose, press F2 +while the input focus is in the window or choose <i>Edit value</i> from the +context menu. Then edit the value and hit Enter. Note that you cannot modify +the strings that <tt>char*</tt> values point to in this way, just the pointer +value.</p> +<p>Using the context menu you can move +the active variable or structure member to the <a href="watches.html">watched +expressions window</a>.</p> +</body> +</html> diff --git a/doc/en/memory.html b/doc/en/memory.html new file mode 100644 index 0000000..75693f9 --- /dev/null +++ b/doc/en/memory.html @@ -0,0 +1,26 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Memory Dump</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Memory Dump Window</h1> +<p>The memory dump window is displayed using <i>View|Memory</i>. It displays +the contents of the program's memory at arbitrary adresses.</p> +<p>To display memory contents, enter an address in the edit field. The +address need not be given in hexadecimal form - it can be an expression.</p> +<p>You can specifiy a format how the memory contents shall be displayed +by chooseing the appropriate options from the popup menu that you invoke +by clicking the right mouse button.</p> +<p>A number of address expressions are remembered. You can recall such +an expression from the drop-down list. Please note that the address expression +is remembered together with the format.</p> +<p>If you don't need to investigate memory contents, it is recommended +that you clear the expression so that no memory dump is displayed - this +speeds up the debugging process.</p> +</body> +</html> diff --git a/doc/en/pgmoutput.html b/doc/en/pgmoutput.html new file mode 100644 index 0000000..3e18902 --- /dev/null +++ b/doc/en/pgmoutput.html @@ -0,0 +1,46 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Program Output</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Program Output Window</h1> +<p>The program output window is displayed using <i>View|Output</i>. The output +window captures text that is written to stdout and stderr by the program +being debugged.</p> +<p>The output window does not allow to type input for the program and it +features only minimal terminal emulation: <tt>\n</tt> (line-feed), +<tt>\t</tt> (horizontal tab), and <tt>\r</tt> (carriage-return) +are treated. These capabilities are usually sufficient to debug GUI programs +which only write debugging output to stdout and stderr.</p> +<p>When a program is debugged with KDbg for the first time, the program +output window is <em>not</em> used. The reason for this is that KDbg cannot +know whether the program requires sophisticated terminal emulation or if +it expects input through a terminal. So, a terminal emulator program is +used by default. In order to redirect the output to the output window, +you must do the following:</p> +<ol> +<li> +Open the <a href="pgmsettings.html">Settings dialog</a> by selecting <i>Settings|This Program</i>.</li> + +<li> +Switch to the <i>Output</i> tab.</li> + +<li> +Choose <i>Only output, simple terminal emulation</i> and click <i>OK</i>.</li> + +<li> +Reload the program by selecting it from the list in <i>File|Recent Executables</i>.</li> +</ol> +<p>You can clear the contents of the output window by selecting <i>Clear</i> +from the popup menu that appears when you click the right mouse button.</p> +<p>If the last line of the output is visible, the window always scrolls +automatically so that the last line remains visible when new output arrives. +If, however, you manually scroll up so that the last line is not visible, +the visible portion of text will not change.</p> +</body> +</html> diff --git a/doc/en/pgmsettings.html b/doc/en/pgmsettings.html new file mode 100644 index 0000000..64225fb --- /dev/null +++ b/doc/en/pgmsettings.html @@ -0,0 +1,81 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Program Settings</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Program Settings Dialog</h1> +<p>In this dialog, program specific settings can be selected. It is invoked +by <i>Settings|This Program</i>. The settings apply only to the currently loaded +executable and will be saved across sessions.</p> +<blockquote><b><i>Important note:</i></b> The chosen settings will only +apply the next time the executable is loaded into KDbg. This means that +after pressing +<i>OK</i> in this dialog, you must reload the executable +using <i>File|Recent Executables</i>!!</blockquote> + +<ul> +<li> +<a href="#driver">Debugger</a></li> + +<li> +<a href="#output">Output</a></li> +</ul> + +<h2> +<a name="driver"></a>Debugger</h2> +<p>In this section, the debugger to be used for the program can be chosen.</p> +<h4> +How to invoke GDB</h4> + +<blockquote>Enter the command to invoke gdb. Leave this field empty to +use the default gdb command as specified in the <a href="globaloptions.html">global +options</a>. When you are cross-compiling and remote-debugging, you will +probably want to use a different gdb suitable for the target platform. +The default command is <tt>gdb --fullname --nx</tt>. Be sure to specify +at least <tt>--fullname</tt> if you change the gdb command. +If you remove this command switch, KDbg will not work. +</blockquote> + +<h2> +<a name="output"></a>Output</h2> +<p>In this section, the terminal emulation under which the program will run +can be selected.</p> +<h4> +No input and output</h4> + +<blockquote>Check this option if your program does not receive input from +the terminal and you do not want to see the output that the program writes +to <tt>stdout</tt> and <tt>stderr</tt> (if any). All three standard channels +(<tt>stdin</tt>, <tt>stdout</tt>, and <tt>stderr</tt>) are effectively +redirected to <tt>/dev/null</tt>.</blockquote> + +<h4> +Only output, simple terminal emulation</h4> + +<blockquote>Check this option if your program does not receive input from +the terminal (<tt>stdin</tt> will be redirected to <tt>/dev/null</tt>), +and the output that it writes to <tt>stdout</tt> and <tt>stderr</tt> does +not require sophisticated terminal emulation. The output will be shown +in the <a href="pgmoutput.html">Output window</a>. +<br><i>Important:</i> The integrated terminal emulator will only interpret +the line-feed character <tt>\n</tt> (ASCII 10) to break lines. It will +<em>not</em> +handle the carriage-return character <tt>\r</tt> (ASCII 13). This is sufficient +for displaying plain debugging output that is often used by developers +of GUI programs.</blockquote> + +<h4> +Full terminal emulation</h4> + +<blockquote>Check this option if your program reads input from <tt>stdin</tt> +or if the output to <tt>stdout</tt> or <tt>stderr</tt> requires terminal +emulation. A terminal emulator will be invoked as specified in the <a href="globaloptions.html">global +options</a>.</blockquote> + +</body> +</html> diff --git a/doc/en/registers.html b/doc/en/registers.html new file mode 100644 index 0000000..fc9fb5b --- /dev/null +++ b/doc/en/registers.html @@ -0,0 +1,35 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Register Dump</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Register Dump Window</h1> +<p>Whenever the program stops, KDbg displays the contents of the CPU registers +in the register dump window. To display this window, choose <i>View|Registers</i>.</p> +<p>The registers are grouped by the kind of register. The window contains 3 columns:</p> +<ol> +<li> +The column <i>Register</i> displays the register name.</li> + +<li> +The column <i>Value</i> displays the contents of the registers in a more +or less raw form. The raw form is usually displayed as hexadecimal numbers, +even the contents of floating point registers.</li> + +<li> +The column <i>Decoded value</i> displays the contents of the registers +in a decoded form. For arithmetic registers this is generally a signed +decimal value, floating point registers are displayed as floating point +numbers, the flag registers are sometimes decoded into named flags.</li> +</ol> +<p>By clicking the right mouse button a context menu is popped up which lets +you select how the value in the third column is displayed. +You can change the type to use for all registers of a group at once if you +choose the format for the group header.</p> +</body> +</html> diff --git a/doc/en/sourcecode.html b/doc/en/sourcecode.html new file mode 100644 index 0000000..9d1bb7f --- /dev/null +++ b/doc/en/sourcecode.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Source Code</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Source Code Window</h1> +<p>The source code window is the main window and is always visible.</p> +<p>The source code window displays program source code. At the left of +each source line is an "active area". It displays a pointer to indicate +which source line the program currently executes, and it indicates on which +source lines breakpoints have been set.</p> +<p>New breakpoints can be set by clicking into the active area with the +left mouse button. An existing breakpoint can be enabled and disabled by +clicking with the middle mouse button.</p> +<p>The tiny plus '+' between the "active area" and the source line can +be clicked on. If you do so, the source line's assembler code will be displayed. +The plus turns into a minus '-', which, if clicked, will hide the disassembled +code.</p> +<p>Mostly, source code windows are opened automatically. To open a new +source file manually, click the right mouse button and choose <i>Open Source</i> +or choose <i>File|Open Source</i>.</p> +</body> +</html> diff --git a/doc/en/stack.html b/doc/en/stack.html new file mode 100644 index 0000000..0db570b --- /dev/null +++ b/doc/en/stack.html @@ -0,0 +1,23 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Stack</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Stack Window</h1> +<p>The stack window is displayed using <i>View|Stack</i>. The stack window +lists the stack frames, i.e. the functions that the program has entered, +but not yet left.</p> +<p>The innermost frame (where the program currently executes) is shown +at the top.</p> +<p>To switch to a different stack frame, simply click on that stack frame. +The <a href="sourcecode.html">source window</a> displays the source line +where the function invocation took place and the <a href="localvars.html">local +variables window</a> and the <a href="watches.html">watch window</a> change +to reflect the local variables of the selected stack frame.</p> +</body> +</html> diff --git a/doc/en/threads.html b/doc/en/threads.html new file mode 100644 index 0000000..3f0d7fb --- /dev/null +++ b/doc/en/threads.html @@ -0,0 +1,42 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Threads</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Threads Window</h1> +<p>The threads window is displayed using <i>View|Threads</i>. The threads +window lists the active threads of the program.</p> +<p><b><i>Note:</i></b> Debugging threaded programs must be supported by +the version of gdb that is used - it is not a feature of KDbg. For Linux +systems this works best with gdb5 and later. However, at the time of this writing gdb +still poorly supports threads on NPTL- (New Posix Threads Library) enabled +systems (glibc 2.3.x and kernel 2.6.x).</p> +<p>The contents of the threads window are updated every time the program +is stopped by the debugger. (That is, the window does <em>not</em> reflect +the state while the program is running.)</p> +<p>The first column shows the thread ID, the second column identifies the +location where the thread currently executes.</p> +<p>The marker in front of the line tells which thread currently is <em>active</em>:</p> +<ul> +<li> +The <a href="stack.html">stack window</a> displays the active threads's +backtrace.</li> + +<li> +The <a href="localvars.html">local variables</a> window displays the active +thread's local variables.</li> + +<li> +The <a href="watches.html">watch window</a> uses the active thread's local +variables to evaluate the expressions.</li> +</ul> +<p>By clicking a listed thread, the active thread is switched, and the corresponding +windows are updated. In particular, the <a href="sourcecode.html">source +window</a> displays the location where the active thread is currently halted.</p> +</body> +</html> diff --git a/doc/en/tips.html b/doc/en/tips.html new file mode 100644 index 0000000..6a0292a --- /dev/null +++ b/doc/en/tips.html @@ -0,0 +1,47 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Tips and Tricks</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +Tips and Tricks</h1> + +<ul> +<li> +You can use breakpoints as bookmarks: Just set a breakpoint and disable +it. Later, you can quickly come back to that breakpoint by double-clicking +it in the breakpoint list (or select it and click <i>View Code</i>). Since +breakpoints are persistent (i.e. KDbg remembers them across invocations +of a program), you get them back next time you invoke KDbg for that particular +program.</li> + +<li> +You can display a value in the watch section in different ways by prepending +gdb's format specifiers in front of the variable to display. E.g. <tt>/x +var.member</tt> displays the <tt>var.member</tt> in hexadecimal notation.</li> + +<li> +You can set breakpoints in a source files that belong to a shared library. +Such breakpoints will be marked as <em>orphaned</em> if the program is not active. +<A href="breakptlist.html#orphanedbp">Orphaned breakpoints</A> are not effective. +In order to make them effective, the program must stop at a time when the shared +library is loaded. For this it is usually sufficient to set a breakpoint in +<tt>main()</tt>. At the time when this breakpoint is hit, the orphaned breakpoints +in the shared library become effective.</li> + +<li> +Debugging multi-threaded programs on NPTL-enabled Linux systems (kernel 2.6.x +or later and glibc 2.3.x or later) may sometimes fails; gdb stops the program +at unexpected instances. In this case the following may help (using bash): +<pre> +LD_ASSUME_KERNEL=2.4.19 kdbg myprogram +</pre>I.e. you run KDbg from the command line such that the old +Linuxthreads implementation is used.</li> +</ul> + +</body> +</html> diff --git a/doc/en/types.html b/doc/en/types.html new file mode 100644 index 0000000..2538efe --- /dev/null +++ b/doc/en/types.html @@ -0,0 +1,183 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Type Tables</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +KDbg's Type Table</h1> +<p>KDbg can display a short description of structured types, so +that it is not necessary to expand the variable in the <a href="localvars.html">local +variables window</a> or <a href="watches.html">watched expressions window</a>. +The information which member variable is displayed is stored in <em>type +tables</em>. There is generally one type table per shared library.</p> + +<p>KDbg's default type tables are located under <tt>$prefix/share/apps/kdbg/types</tt>. +User defined type tables can be placed in <tt>${TDEHOME}/share/apps/kdbg/types</tt>, where +<tt>${TDEHOME}</tt> is <tt>~/.kde</tt> if it is not a defined environment variable. +The file names end with <tt>.kdbgtt</tt>. Example: The type table for <tt>libqt.so</tt> +is named <tt>qt.kdbgtt</tt>. +User defined type tables override the type tables provided by the system.</p> +<p>A type table file obeys the regular KDE configuration file syntax. The +file has the following groups:</p> +<ul> +<li> +A group <tt>[Type Table]</tt> which lists the types and information how +the debugger can identify whether the program is linked against the library.</li> + +<li> +A group for each type which has information about how the value of such +a type is displayed by KDbg.</li> +</ul> +<p>In order to determine which type tables apply to the program being debugged +KDbg lists the shared libraries it is linked to. Then it matches the names +against the <tt>ShlibRE</tt> entries of all type tables. Those that match +are used. If a type appears in several type tables, it is unspecified which +one will be used.</p> +<p>KDbg's type recognition only works for libraries that are linked dynamically +to the program being debugged.</p> +<h2> +The <tt>[Type Table]</tt> group</h2> +<p>This group contains the following entries:</p> +<ul> +<li> +<tt>Types1</tt>, <tt>Types2</tt>, etc. These entries name the types, +separated by commas. +Each of the entries can list any number of types. The entries must be numbered +consecutively (KDbg stops reading at the first gap), although an entry may be +empty (i.e. contain no type at all). +Sometimes the order in which the names are listed is important +(see <tt>Alias</tt> types below).</li> + +<li> +<tt>ShlibRE</tt>. KDbg uses this entry to determine if the type table applies +to the program being debugged. For this purpose KDbg determines the shared +libraries to which the program is linked. If any of the libraries matches +this entry, the type table applies. The regular expression is a TQt-regular +expression (the metacharacters <tt>.*?[]^$\</tt> are recognized in the +usual way, but there is no possibility to group characters.)</li> + +<li> +<tt>LibDisplayName</tt>. This entry is used in lists where the available +type tables are listed to identify this type table. + +<br><font size=-1>This is not used currently.</font></li> + +<li> +<tt>EnableBuiltin</tt> lists extensions that must be enabled if this +library is used. Currently, two builtins are supported: +<ul> +<li> +<tt>TQString::Data</tt> is used to display unicode strings of TQt's <tt>TQString</tt> +class. See below.</li> +<li><tt>TQCharIsShort</tt> is used only in connection with <tt>TQString::Data</tt> +to specify that a unicode character is stored in an object of type <tt>short</tt>. +See <tt>qt3.kdbgtt</tt> for examples.</li></ul></li> +</ul> + +<p>In the case of regular types the names of types should follow the output of the +<tt>whatis</tt> gdb command less any <tt>const</tt>, <i>spaces</i>, or trailing +<tt>&</tt>. +If the type contains a a comma in its name, it must be escaped with a backslash. +But note that the comma should not be escaped in the type's group (which is described +in the next section). +</p> +<p>In the case of template types the name can be arbitrary because the type's group +will mention the template name and a type parameter list.</p> + +<h2> +The type's group</h2> +<p>There is one group for each type that is named exactly as the type. <font size=-1>At +the moment C++ template classes are not supported.</font> Each group contains +the following entries:</p> +<ul> +<li>An optional <tt>Template</tt> entry that specifies the exact template type +name as it is reported by gdb's <tt>whatis</tt> command. However, it is +possible to replace template parameter types at the top-most level by an +asterisk <tt>*</tt>, which acts as a wildcard: It matches <b>one</b> +template type argument that is reported by <tt>whatis</tt> (except that an +asterisk in the last position matches all remaining template type arguments). +</li> +<li> +<tt>Display</tt> determines how the value of the type is displayed by KDbg. +The string must contain 1 to 5 percent characters '<tt>%</tt>'. These are +replaced by the results of the expressions printed by the <tt>Expr</tt><i>x</i> +entries.</li> + +<li> +One or more of <tt>Expr1</tt>, <tt>Expr2</tt>, etc. Each of them must contain +one or more <tt>%s</tt> sequence, which will be replaced by the expression +whose value is investigated. The so constructed expression is submitted +to gdb, and the result substituted back for the corresponding percent character +in the <tt>Display</tt> string.</li> + +<li> +An optional <tt>FunctionGuard</tt><i>x</i> that is associated with the corresponding <tt>Expr</tt><i>x</i>. +If the evaluation of the resulting gdb expression returns an error, the corresponding expression from <tt>Expr</tt><i>x</i> is not evaluated. (This is used to guard function calls.) +<li> +<tt>Alias</tt> names an alias type. If this entry is present, the type +is treated like the specified type. That alias type must appear before +this type in the <tt>Types</tt><i>x</i> entries in the <tt>Type Table</tt>.</li> +</ul> +<p><font size=-1>Currently the number of expressions per type is limited to +5. This can easily be changed if it's too restrictive, but I recommend +not to go to that limit at all - it will slow down the debugging process.</font></p> +<p>KDbg recognizes a special extension that is used to display TQt 2.x's and TQt 3.x's +unicode strings: If an <tt>Expr</tt><i>x</i> is prepended with <tt>/TQString::Data</tt>, +it is assumed that the result of the expression is a pointer to a <tt>TQString::Data</tt>. +The value displayed is the unicode string that this instance of <tt>TQString::Data</tt> +represents (which can be <tt>TQString::null</tt> if it is TQt's well-defined +null string or <tt>(null)</tt> if the <tt>unicode</tt> member is the null +pointer). See <tt>qt2.kdbgtt</tt> for examples.</p> +<p>Tip: It is not necessary to define derived types if they ought to be +treated the same as the base class - KDbg can deduce derived types and +uses the type specification of the (leftmost) base class. You can use the +<tt>Alias</tt> +entry to quickly specify that a type should be treated like a non-leftmost +base class for a multiple-inheritance class.</p> +<h2> +An example</h2> +<p>The example shows how <tt>TQString</tt> and <tt>TQRect</tt> are defined +in <tt>qt3.kdbgtt</tt>. Furthermore, the template type <tt>TQValueVector</tt> +is defined. This example applies to TQt 3.x, which is located in shared library +whose name ends in <tt>libtqt-mt.so.3</tt>.</p> +<pre>[Type Table] +Types1=TQString,TQRect +Types2=TQValueVector +LibDisplayName=libqt 3.x +ShlibRE=libtqt-mt\.so\.3$ +EnableBuiltin=TQString::Data,TQCharIsShort + +[TQString] +Display={ % } +Expr1=/TQString::Data (%s).d + +[TQValueVector] +Template=TQValueVector<*> +Display={ size=% shared=% capacity=% } +Expr1=($tmp=(%s).sh)->finish-$tmp->start +Expr2=(%s).sh->count +Expr3=($tmp=(%s).sh)->end-$tmp->start + +[TQRect] +Display={ tl=(%,%) br=(%,%) } +Expr1=(%s).x1 +Expr2=(%s).y1 +Expr3=(%s).x2 +Expr4=(%s).y2</pre> +<p>This example shows these features:</p> +<ul> +<li>The name of the template type, <tt>TQValueVector</tt> is irrelevant. +The exact type name is specified under the <tt>Template=</tt> entry. +It specifies a single wildcard so that it applies to all specializations. +</li> +<li>In order to evaluate the expression that was supplied in the <tt>%s</tt> +only once, the result is stored in a temporary gdb variable and reused later in +the same expression.</li> +<li>Note that it is safer to wrap the <tt>%s</tt> in parentheses.</li> +</ul> +</body> +</html> diff --git a/doc/en/watches.html b/doc/en/watches.html new file mode 100644 index 0000000..395cc61 --- /dev/null +++ b/doc/en/watches.html @@ -0,0 +1,28 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Watched Expressions</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1> +The Watched Expressions Window</h1> +<p>The watched expressions window is opened using <i>View|Watched Expressions</i>. +It displays arbitrary expressions.</p> +<p>To add an expression, type it into the edit field and press Enter or +click <i>Add</i>. To remove an expression, click on it (choose the root +of the expression) and click <i>Del</i>.</p> +<p>You can also move a variable or structure member from the <a href="localvars.html">local +variables window</a> to this window using the context menu in the local +variables window.</p> +<p>The values of most expressions can be changed. For this purpose, press F2 +while the input focus is in the window. Then edit the value and hit Enter. +Note that you cannot modify the strings that <tt>char*</tt> values point +to in this way, just the pointer value.</p> +<p>Watched expressions are stored across debugging sessions. It is recommended +that you remove expressions that your don't need any longer because that +speeds up the debugging process.</p> +</body> +</html> diff --git a/doc/en/xslt.html b/doc/en/xslt.html new file mode 100644 index 0000000..fdc5ec3 --- /dev/null +++ b/doc/en/xslt.html @@ -0,0 +1,24 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - User's Manual - Debugging XSLT scripts</title> +</head> +<body text="#000000" bgcolor="#FFFFFF"> +<p><a href="index.html">Contents</a></p> +<h1>Debugging XSLT scripts</h1> +<p>KDbg allows to debug XSLT (XML stylesheet translation) scripts using +<a href="http://xsldbg.sourceforge.net/">xsldbg</a>, which must be available +on your system.</p> +<h2>Specifying the script and an XML file to transform</h2> +<p>XSLT mode is automatically entered if a "program" is loaded +that has a file name that ends in <tt>.xsl</tt>. In addition, the +<A href="invocation.html">command line option</A> <tt>-l XSL</tt> can be +specified to explicitly choose this mode.</p> +<p>To debug an XSLT script it is necessary to specify an XML data file +that the script can transform. This is done in the +<a href="argspwdenv.html">Program Arguments</a> dialog, where the XML +file is specified in the <em>Program Arguments</em> edit box.</p> +</body> +</html> diff --git a/doc/man/kdbg.1 b/doc/man/kdbg.1 new file mode 100644 index 0000000..588ef94 --- /dev/null +++ b/doc/man/kdbg.1 @@ -0,0 +1,92 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH KDBG 1 "March 25, 2005" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp <n> insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +kdbg \- a graphical debugger interface +.SH SYNOPSIS +.B kdbg +[ \fIgeneric-options\fP ] +[ \fB\-t\fP \fIfile\fP ] [ \fB\-r\fP \fIdevice\fP ] +[ \fB\-l\fP \fIlanguage\fP ] [ \fB\-p\fP \fIpid\fP ] +[ \fIprogram\fP ] [ \fIcore\fP ] +.SH DESCRIPTION +\fBKDbg\fP is a graphical user interface to \fBgdb\fP, the GNU debugger. It +provides an intuitive interface for setting breakpoints, inspecting +variables, stepping through code and much more. KDbg requires TDE but +you can of course debug any program. +.PP +KDbg can also debug XSLT (XML stylesheet translation) scripts by +interfacing with \fBxsldbg\fP. Debian users must install the \fIkxsldbg\fP +package to make use of this feature. +.PP +You can pass KDbg the path of the executable to debug (\fIprogram\fP) or +a core dump to debug (\fIcore\fP). +.PP +Features of KDbg include: +.PP +.RS +Inspection of variable values in a tree structure. +.PP +Direct member: For certain compound data types the most important +member values are displayed next to the variable name, so that it is +not necessary to expand the subtree of that variable in order to see +the member value. KDbg can also display Qt's QString values, which +are Unicode strings. +.PP +Debugger at your finger tips: The basic debugger functions (step, +next, run, finish, until, set/clear/enable/disable breakpoint) are +bound to function keys F5 through F10. Quick and easy. +.PP +View source code, search text, set program arguments and environment +variables, display arbitrary expressions. +.PP +Debugging of core dumps, attaching to running processes is possible. +.PP +Conditional breakpoints. +.RE +.SH OPTIONS +Below are the kdbg-specific options. +For a full summary of options, run \fIkdbg \-\-help\fP. +.TP +\fB\-t\fP \fIfile\fP +Write a transcript of the conversation with the debugger to the given +file. +.TP +\fB\-r\fP \fIdevice\fP +Use remote debugging via the given device. +.TP +\fB\-l\fP \fIlanguage\fP +Specify the language of the program/script to debug. +This must be either \fIC\fP (for a C/C++ program) or +\fIXSL\fP (for an XSLT script). +If this option is not passed then KDbg will try to deduce the language +from the given filename. +.TP +\fB\-p\fP \fIpid\fP +Attach to the process with the given process ID. +.SH SEE ALSO +.BR gdb (1), +.BR xsldbg (1). +.PP +Full user documentation is available through the TDE Help Centre. +Alternatively the HTML documentation can be viewed directly from +\fI/opt/trinity/share/doc/tde/HTML/<lang>/kdbg/\fP. +.SH AUTHOR +KDbg was written by Johannes Sixt <Johannes.Sixt@telecom.at>. +.br +This manual page was prepared by Ben Burton <bab@debian.org> +for the Debian GNU/Linux system (but may be used by others). diff --git a/doc/ru/argspwdenv.html b/doc/ru/argspwdenv.html new file mode 100644 index 0000000..9108a91 --- /dev/null +++ b/doc/ru/argspwdenv.html @@ -0,0 +1,43 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Аргументы, Окружение</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Указание аргументов программы, рабочего каталога, переменные окружения</h1> +Выберите пункт меню <i>Исполнение|Аргументы</i> для вызова диалогового окна, в +котором вы сможете установить аргументы отлаживаемой программы, ее рабочий +каталог и переменные окружения. +<h2> +<a NAME="PgmArgs"></a>Аргументы программ</h2> +В самой верхней строке ввода укажите аргументы командной строки, которые должны +быть переданы программе. Эти аргументы будут использованы при следующием +запуске программы. +<h2> +<a NAME="WorkingDir"></a>Рабочий каталог</h2> +Ниже расположена строка ввода, в которой вы можете указать рабочий каталог +программы. Программа будет работать в указанном каталоге при следующем запуске. +<p>Рабочий каталог также действует и для gdb! Указанный вами каталог будет +немедленно передан gdb и вступит в силу как только вы нажмете <i>OK</i>. Это +может повлиять на поиск файлов исходных текстов. +<h2> +<a NAME="Environment"></a>Переменные окружения</h2> +В секции переменных окружения введите выражение в виде <tt>VARIABLE=value</tt> +для установки переменной окружения <tt>VARIABLE</tt> в значение <tt>value</tt> +и кликните на кнопку <i>Изменить</i>. Для удаления переменной, выберите ее в +списке и кликните на кнопку <i>Удалить</i>. Для изменения значения переменной, +выберите ее из списка, отредактируйте ее значение в поле редактирования и +кликните по кнопке <i>Изменить</i>. Если вы измените имя переменной и кликните +по кнопке <i>Изменить</i>, то вы добавите новую переменную! Новые переменные +окружения будут использованы вашей программой при следующем запуске. +<p>Если в Linux вы используете библиотеку glibc2, то вам необходимо установить +переменную окружения <tt>LD_BIND_NOW</tt>. Очень важно, чтобы вы установили +значение этой переменной в <tt>1</tt> для всех сессий отладки. Если она не +будет установлена, то gdb не сможет осуществлять пошаговую отладку (в и из) +системных функций, импортируемых из разделяемых библиотек <tt>libc</tt> и +остальных. +</body> +</html> diff --git a/doc/ru/breakptlist.html b/doc/ru/breakptlist.html new file mode 100644 index 0000000..b3007b3 --- /dev/null +++ b/doc/ru/breakptlist.html @@ -0,0 +1,68 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Список точек останова</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Список точек останова</h1> +Список точек останова отображает все установленные точки останова и просмотра и +позволяет манипулировать ими. Он может быть вызван посредством пункта меню +<i>Вид|Точки останова</i>. +<h2>Перечень точек останова</h2> +Для каждой точки останова отображается следующее: +<ul> +<li>местонахождение точки останова,</li> + +<li>счетчик остановок на этой точке,</li> + +<li>счетчик пропусков точки останова, если указан,</li> + +<li>условие останова, если указно.</li> +</ul> +Иконка напротив записи указаывает состояние точки останова: включена - красная +точка, выключена - светло-красная точка, временная точка останова - маленькие +часы или условная точка останова - маленький знак вопроса. +<p>Точки просмотра обозначаются иконкой лупы напротив соответствующей записи. +<h2>Управление точками останова</h2> +<a NAME="StopProg"></a>Необходимо отметить, что точками останова и просмотра +невозможно управлять во время работы программы. Если программа уже запущена, +необходимо, чтобы она остановилась либо попав в точку останова, либо +принудительно посредством вызова пункта меню <i>Исполнение|Прервать</i>. +Это не завершит исполнение программы, а всего лишь остановит ее. Теперь вы +можете управлять точками останва, после чего выберите пункт +<i>Исполнение|Продолжить</i> для продолжения исполнения программы. +<p>Для установки точки останова на определенную строку исходного текста самым +простым способом является установка ее в окне исходных текстов. Если вы не +знаете имени файла и номера строки, где находится интересующая вас функция, вы +просто можете ввести ее имя в строке ввода над списком и кликнуть на кнопку +<i>Добавить Точку Останова</i>. +<p>Вы можете включать и выключать точки останова, выбрав их в списке, а затем +кликнув на кнопки <i>Включить</i> или <i>Выключить</i>. Или просто кликните +средней кнопкой мыши по нужному элементу списка - вы будете включать и +выключать их так же, как и в окне исходных текстов. +<p>Вы можете установить условие срабатывания точки останова или установить +счетчик пропусков этой точки, показывающий количество проходов, при которых не +будет произведен останов. Для этого кликните на кнопку <i>Условия</i> и введите +условие и/или счетчик пропусков. +<h2>Управление точками просмотра</h2> +Точки просмотра похожи на точки останова, за исключением того, что прерывание +происходит только при изменении значения содержимого памяти. Также как и точки +останова, точками просмотра нельзя управлять во время исполнения программы. +Подробнее см. <a href="#StopProg">выше</a>. +<p>Для установки точки просмотра, введите выражение в строку ввода над списком +и кликните на кнопку <i>Добавить Точку Просмотра</i>. Программа остановится при +изменении значения выражения. Необходимо отметить, что точки просмотра, +использующие локальные переменные, могут быть установлены только когда +программа прервана в точке останова (или принудительно посредством вызова +пункта меню <i>Исполнение|Прервать</i>). +<p>Для удаления точки просмотра, выберите ее из списка и кликните на кнопку +<i>Удалить</i>. Если выражение использует локальные переменные, то точка +просмотра будет удалена автоматически при выходе программы из данной области +стека (функции). +<p>Вы также можете установить для точек просмотра условия и счетчик пропусков, +выбрав его из списка и кликнув на кнопку <i>Условия</i>. +</body> +</html> diff --git a/doc/ru/globaloptions.html b/doc/ru/globaloptions.html new file mode 100644 index 0000000..c82a73d --- /dev/null +++ b/doc/ru/globaloptions.html @@ -0,0 +1,72 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство пользователя - Глобальные Переменные</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Солдержание</a> +<h1> +Далоговое окно Глобальных Переменных</h1> +Для установки некоторых глобальных переменных можно использовать +<i>Файл|Глобальные Переменные</i>. Вы можете установить: +<ul> +<li> +команду, с помощью которой вызывается gdb,</li> + +<li> +команду, которая открывает терминал для вывода программы,</li> + +<li> +должен ли KDbg переходить в обыкновенный режим после остановки программы и +через какой промежуток времени он опять перейдет в фоновый режим,</li> + +<li> +размер табуляции.</li> +</ul> + +<h4> +Как вызывать gdb</h4> + +<blockquote>Если вы используете различные версии gdb, нужно указать +их в <i>Как вызывать gdb</i>. По умолчанию используется +форма <tt>gdb --fullname +--nx</tt>. Проверьте, указаны ли данные опции, +если вы изменили исполняемый модуль gdb. Если вы пропустите их, KDbg не +будет работать. Если вы испортили запись, ее можно очистить, переведя +в значения по умолчанию.</blockquote> + +<h4> +Как вызвать эмулятор терминала</h4> + +<blockquote>Если вы хотите испотльзовать различные терминальные программы +для показа вывода программы, укажите их в +<i>Терминалы для вывода программ</i>. Значение по умолчанию – +<tt>xterm -name kdbgio -title %T -e sh -c %C</tt>. +В данной записи, +<tt>%T</tt> заменяется титульной строкой, <tt>%C</tt> +заменяется скриптом командного интерпретатора Борна, который будет циклически +вызываться, пока не произойдет закрытия терминального окна. +(Скрипт использует в цикле <tt>sleep +3600</tt>). Альтернави\ой данных установок может служить +<tt>konsole --name kdbgio --caption %T -e sh -c %C</tt>.</blockquote> + +<h4> +Переход в обычный режим</h4> + +<blockquote>Вы можете указать KDbg окну перевестись в обычный режим, +когда отлаживаемая программа завершится (в точке останова или по сигналу). +Иначе окно KDbg не активируется (по крайней мере в KWM &150; оконном менеджере +KDE). Некоторым пользователям такое поведение может показатся навязчивым, +поэтому по умолчанию данная опция отключена. +</blockquote> + +<blockquote>Если опция включена, KDbg переключится в фоновый режим, если +программа будет продолжена, но только по прошествии заданного временного +промежутка. Это сделано для того, чтобы окно отладчика не переключалось +все время, когда используется пошаговое исполнение программы. +</blockquote> + +</body> +</html> diff --git a/doc/ru/howdoi.html b/doc/ru/howdoi.html new file mode 100644 index 0000000..1549702 --- /dev/null +++ b/doc/ru/howdoi.html @@ -0,0 +1,78 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство пользователя - Как я могу...?</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1> +Как я могу...?</h1> + +<h4> +... установить точки останова?</h4> +Существует несколько способов: +<ul> +<li>Нажатием левой клавиши мыши в окне исходного текста в "активной области", +находящейся слева от строки исходного текста.</li> + +<li>Выбрать строку в окне исходного текста и выбрать опцию +меню <i>Точки останова</i>.</li> + +<li>Вы можете воспользоватся <a href="breakptlist.html">списком точек останова</a>.</li> +</ul> +Если вы не можете установить точки останова, возможно программа работает +в данный момент. Когда программа работает, установка точек останова невозможна. +Остановите программу с помощью <i>Выполнение|Прервать</i>. Если +вы по-прежнему не можете установить точку останова, проверьте, скомпилирована +<i>и собрана</i> ли ваша программа с поддержкой информации для отладки. +<h4>... установить значение глобальной переменной или какого-либо выражения?</h4> +Используйте окно Просмотра. +<h4> +... установить точку просмотра?</h4> +Точки просмотра устанавливаются в <a href="breakptlist.html">списке +точек останова</a>. +<h4> +... использовать дамп памяти?</h4> +Сначала необходимо загрузить исполняемый модуль, используя меню +<i>Файл|Исполняемый модуль</i>, затем указать соответствующий дамп памяти, +используя <i>Файл|Дамп Памяти</i>. +<h4> +... отлаживать программу, содержащую бесконечный цикл?</h4> +Запустите программу и подождите, пока она войдет в бесконечный цикл. +Переключитесь в KDbg и выберите <i>Выполнение|Прервать</i>. +Далее можно использовать отладочные средства. +<h4> +... сделать так, чтобы программа определенное количество раз игнорировала +точку останова во время прохода до того, как начнет прерываться?</h4> +В <a href="breakptlist.html">списке точек останова</a> выберите точку +останова; нажмите <i>Условная</i> и укажите количество раз для пропуска +точки останова в поле <i>Число пропусков</i>. +<h4> +... установить переменную среды для исполнемого модуля?</h4> +Выберите <i>Выполнение|Аргументы</i> и укажите переменные среды в +<a href="argspwdenv.html#Environment">диалоге аргументов программы</a>. +<h4> +... установить рабочий каталог для исполняемого модуля?</h4> +Выберите <i>Выполнение|Аргументы</i> и укажите рабочий каталог в +<a href="argspwdenv.html#WorkingDir">диалоге ургументов программы</a>. +<h4> +... избавиться от терминального окна?</h4> +Выберите <i>Файл|Настройки</i> и перейдите на меню +<a href="pgmsettings.html#output">Вывод</a>. +Выберите <i>Только вывод, простая эмуляция терминала</i> и нажмите +<i>OK</i>. +Теперь перезапустите программу (выберите ее из списка +<i>Файл|Последний исполняемый модуль</i>). Вывод программы теперь перенаправлен +в созданное <a href="pgmoutput.html">окно вывода</a>, а в качестве +стандартного потока ввода используется <tt>/dev/null</tt>. +<p>Вы должны произвести данную операцию для каждой новой отлаживаемой +программы. +<p><b><i>Важно:</i></b>Вы не должны делать этого, если программа +читает данные со стандартного потока ввода (обычно терминала) или +ее вывод требует более интеллектуальной эмуляции терминала (то есть +не только возврата каретки и прогона строки). Окно вывода не +поддерживает ввод и эмуляцию терминала. +</body> +</html> diff --git a/doc/ru/index.html b/doc/ru/index.html new file mode 100644 index 0000000..08e0d88 --- /dev/null +++ b/doc/ru/index.html @@ -0,0 +1,177 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> + +<h1>KDbg - Руководство пользователя</h1> + +<h2>Содержание</h2> + +<ul> +<li> +<a href="#Introduction">Введение</a></li> + +<li> +<a href="#UsingKDbg">Использование KDbg</a></li> + +<li> +<a href="#InfoWindows">Информационные окна KDbg</a></li> + +<li> +<a href="#Tips">Советы и пр.</a></li> + +<li>Для опытных пользователей: <a href="types.html">Таблицы типов</a></li> + +<li> +<a href="#KnownProblems">Известные проблемы</a></li> + +<li> +<a href="#Author">Автор</a></li> +</ul> + +<hr> +<h2> +<a NAME="Introduction"></a>Введение</h2> +KDbg является графическим интерфейсом к <tt>gdb</tt>, отладчиком проекта GNU. +<p>Это означает, что KDbg сам по себе не является отладчиком. Скорее, он +общается с <tt>gdb</tt>, отладчиком, использующим командную строку, посылая ему +команды и получая их результат, например, значения переменных. Пункты меню и +указания мышью преобразуются в последовательность команд <tt>gdb</tt>, а +результат преобразуется к более-менее визуальному представлению, такому как +структурное содержимое переменных. +<p>Обобщение выше сказанного - KDbg целиком зависит от возможностей +используемого отладчика <tt>gdb</tt>. KDbg не может делать больше, чем делает +<tt>gdb</tt>. Например, если имеющаяся у вас версия <tt>gdb</tt> не +поддерживает отладку многопоточных программ, то и KDbg не поможет вам в этом +(несмотря на то, что он выводит окно потоков). + +<h2> +<a NAME="UsingKDbg"></a>Использование KDbg</h2> +Перед началом использования KDbg вы наверное захотите просмотреть опции в +диалоге <a href="globaloptions.html">Глобальные Опции</a>, который можно +вызвать из пункта меню <i>Файл|Глобальные Опции</i>. +<h4>Указание отлаживаемой программы</h4> +Для отладки программы выберите пункт меню <i>Файл|Исполняемые модули</i>. Если +вы ранее отлаживали эту программу, вы можете выбрать ее из пункта +<i>Файл|Последние Исполняемые Модули</i>. Программа загрузится. +<p>Если вы хотите произвести отладку по дампу памяти, то сначала вы должны +загрузить программу, породившую этот дамп, а потом загрузить сам дамп, выбрав +пункт меню <i>Файл|Дамп Памяти</i>. Теперь KDbg перейдет в ту точку программы, +которая вызвала создание дампа памяти. +<p>Теперь вы можете устанавливать точки останова, ипользуя меню +<i>Breakpoint</i>, меню, вызваемое правой кнопкой мышы, или +<a href="breakptlist.html">окно точек останова</a>. +<p>Также вы можете установить настройки только для отлаживаемой в данный момент +программы в диалоге <a href="pgmsettings.html">Настройки Программы</a>, +вызываемом пунктом меню <i>Файл|Настройки</i>. + +<h4>Исполнение программы</h4> +Теперь запустите программу, выбрав пункт меню <i>Исполнение|Запуск</i>. Теперь +программа будет исполняться обычным образом до тех пор, пока она либо не +окончится, либо не попадет в точку останова или точку просмотра, либо не +получит сигнал. +<p>Вы можете запустить программу с аргументами, установить рабочий каталог, а +также переменные окружения для данной программы. Для этого выберите пункт меню +<i>Исполнение|Аргументы</i> и укажите ваши параметры в диалоге +<a href="argspwdenv.html">Аргументы Программы</a> (перед запуском программы). +<p>Вы также можете подключиться к уже работающей программе. Для этого загрузите +исполняемый модуль, как описано выше. Затем выберите пункт меню +<i>Исполнение|Подсоединиться</i>. Укажите идентификатор процесса и кликните на +<i>OK</i>. Работающая программа будет остановлена (но не прервана), а в окне +исходных текстов будет указана текущая точка останова. + +<h4>Программа остановлена - что теперь?</h4> +Когда программа останавливается в точке останова, просмотра или при получении +сигнала, в <a href="sourcecode.html">окне исходных текстов</a> указывается +текущая строка остановки программы. Часто встречается ситуация, когда программа +останавливается, получая сигнал (обычно <tt>SIGSEGV</tt>), находясь в функции, +которую вы вызываете из своей программы, но сами не разрабатывали. В этом +случае просмотрите <a href="stack.html">окно стека</a> и найдите функцию, +которую писали вы (начиная с вершины списка) и кликните на нее. Это укажет вам +место, с которого вы сможете начать поиск ошибки в вашей программе. +<p>В меню <i>Исполнение</i> вы найдете команды, которые вам понадобятся для +запуска программы, пошаговой отладке, прерывания исполнения программы +(<i>Прерывание</i>). Важные команды, такие как <i>Запуск</i> и все виды +<i>Шагов</i>, привязаны к функциональным клавишам, которыми рекомендуется +пользоваться для повышения эффективности отладки. +<br><font size=-1>Эти функции не настраиваются, но может вы захотите внести +свой вклад и разработать эту функциональность?</font> +<p>В меню <i>Точки останова</i> вы найдете команды для установки, снятия, +включени и выключения временных и постоянных точек останова. Вы можете вывести +список точек останова в <a href="breakptlist.html">окно точек останова</a>. +Вы также может установить точку останова, кликнув левой кнопкой мыши в левое +поле строки исходного текста. Для включения и выключения точки останова +кликните средней кнопкой мыши на точку останова. +<p>Шестеренка на панели инструментов показывает, что gdb работает, в этом +случае она вертится. Когда она вертится быстро, KDbg не будет принимать +команды исполнения, а если она вращается медленно, то KDbg считывает значения +переменных. +<h2> +<a NAME="InfoWindows"></a>Информационные окна KDbg</h2> +KDbg выводит информацию и принимает команды в различных окнах. В меню +<i>Вид</i> вы обнаружите команды для вызова и закрытия этих окон. Все эти окна +вы можете размещать так, как вам удобно. + +<ul> +<li> +<a href="sourcecode.html">Окно исходных текстов</a></li> + +<li> +<a href="localvars.html">Окно локальных переменных</a></li> + +<li> +<a href="stack.html">Окно стека</a></li> + +<li> +<a href="watches.html">Окно отслеживаемых выражений</a></li> + +<li> +<a href="breakptlist.html">Список точек останова</a></li> + +<li> +<a href="pgmoutput.html">Окно вывода</a></li> + +<li> +<a href="registers.html">Окно содержимого регистров</a></li> + +<li> +<a href="memory.html">Окно образа памяти</a></li> + +<li> +<a href="threads.html">Окно потоков</a></li> +</ul> + +<h2> +<a NAME="Tips"></a>Советы и пр.</h2> +Следующие разделы содержат полезные сведения об использовании KDbg. +<ul> +<li> +<a href="tips.html">Полезные Советы</a></li> + +<li> +<a href="howdoi.html">Как я могу...?</a></li> +</ul> + +<h2> +<a NAME="KnownProblems"></a>Известные проблемы</h2> +gdb 4.16 имеет проблемы с обработкой классов С++ с виртуальным базовым классом. +(Такие классы обычно встречаются в программах, использующих CORBA.) Он +прерывается по ошибке сегментации, а KDbg сообщает о том, что gdb неожиданно +завершился. К сожалению, с этим ничего нельзя сделать. Вам придется +перезапустить gdb, выбрав пункт меню <i>Файл|Исполняемый модуль</i>, который +перезапустит сессию отладки. +<p>Распознавание типов в KDbg работает только для библиотек, динамически +линкуемых с отлаживаемой программой. + +<h2> +<a NAME="Author"></a>Автор</h2> +KDbg разработан <a href="mailto:j6t@kdbg.org">Johannes Sixt</a> +с помощью многих остальных. +<br>Домашняя страница KDbg расположена по адресу +<a href="http://www.kdbg.org/">http://www.kdbg.org/</a>. +</body> +</html> diff --git a/doc/ru/localvars.html b/doc/ru/localvars.html new file mode 100644 index 0000000..31b9a8b --- /dev/null +++ b/doc/ru/localvars.html @@ -0,0 +1,19 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Локальные Переменные</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Локальных Переменных</h1> +Окно локальных переменных вызывается выбором пункта меню <i>Вид|Локальные</i>. +Данное окно отображает содержимое локальных переменных, определенных +указанной текущей областью стека (stack frame). +<p>Отображаемый набор локальных переменных определяется областью стека (stack +frame), выбранной в окне стека. +<p>Значения переменных, изменивщихся между остановами программы, отображаются +красным цветом. +</body> +</html> diff --git a/doc/ru/memory.html b/doc/ru/memory.html new file mode 100644 index 0000000..e8ba057 --- /dev/null +++ b/doc/ru/memory.html @@ -0,0 +1,26 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство пользователя - Образ памяти</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно образа памяти</h1> +Чтобы отобразить окно образа памяти нужно выбрать <i>Вид|Память</i>. +Оно выводит содержимое памяти программы по любым адресам. +<p>Для просмотра содержимого памяти, введите нужный адрес в поле редактирования. +Адрес не обязательно должен задаваться в шестнадцатеричной форме и может +задаваться выражением. +<p>Вы можете определить формат отображения содержимого памяти с помощью +выбора соответствующих опций из выпадающего меню, которое вызывается +нажатием правой клавиши мыши. +<p>Адресные выражения запоминаются и впоследствии могут быть +вызваны из выпадающего списка. Обратите внимание, что адресные выражения +запоминаются вместе с их форматом. +<p>Если вы не собираетесь исследовать содержимое памяти, рекомендуется +очистить выражение таким образом, чтобы содержимое памяти не выводилось +– это увеличит скорость процесса отладки. +</body> +</html> diff --git a/doc/ru/pgmoutput.html b/doc/ru/pgmoutput.html new file mode 100644 index 0000000..2a17c69 --- /dev/null +++ b/doc/ru/pgmoutput.html @@ -0,0 +1,43 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Вывод Программы</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Вывода Программы</h1> +Окно вывода программы можно вызвать, выбрав пункт меню <i>Вид|Вывод</i>. В это +окно выводятся стандартные потоки вывода и диагностики отлаживаемой программы. +<p>Оно не позволяет вводить какие-либо данные в программу и реализует лишь +минимальную эмуляцию терминала: <tt>\n</tt> (перевод строки) преобразуется в +комбинацию начало строки-перевод строки, а <tt>\r</tt> (начало строки) +игнорируется. Этих возможностей обычно предостаточно для отладки GUI программ, +которые выводят отладочные сообщение в стандартные потоки вывода или +диагностики. +<p>Когда программа отлаживается первый раз, окно вывода программы не +<i>не</i>используется. Ведь KDbg не знает, достаточно ли программе столь +ограниченных возможностей или же она ожидает ввода с терминала. Поэтому по +умолчанию используется штатный эмулятор терминала. Для перенаправления вывода +программы в окно вывода необходимо проделать следующие шаги: +<ol> +<li> +Вызвать диалоговое окно <a href="pgmsettings.html">Настройки</a> посредством +пункта меню <i>Файл|Настройки</i>.</li> + +<li>Выбрать закладку <i>Вывод</i>.</li> + +<li>Выбрать <i>Только вывод, простой эмулятор терминал</i> и кликнуть на +кнопку <i>OK</i>.</li> + +<li>Перезагрузить программу из списка <i>Файл|Последние Исполняемые Модули</i>.</li> +</ol> +Для очистки содержимого окна выберите пункт <i>Очистить</i> в всплывающем меню, +вызываемом нажатием правой кнопки мыши в этом окне. +<p>Если последняя строка окна заполнена текстом, то окно прокручивается +автоматически таким образом, что последняя строка всегда остается видимой при +поступлении новых сообщений. Если вы прокрутите окно, то отображаемая позиция +не изменится. +</body> +</html> diff --git a/doc/ru/pgmsettings.html b/doc/ru/pgmsettings.html new file mode 100644 index 0000000..ca14b4b --- /dev/null +++ b/doc/ru/pgmsettings.html @@ -0,0 +1,73 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Настройки Программ</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Диалог Настройки Программ</h1> +В этом диалоге можно указать настройки конкретной программы. Для его вызова +выберите пункт меню <i>Файл|Настройки</i>. Данные настройки будут применены +только к текущей отлаживаемой программе и будут сохранены между сессиями ее +отладки. +<blockquote><b><i>Важное замечание:</i></b> Настройки будут применены только +при следующей загрузке исполняемого модуля в KDbg. Это означает, что после +нажатия на <i>OK</i> вы должны перезагрузить исполняемый модуль с помощью +пункта меню <i>Файл|Исполняемые модули</i>!!</blockquote> + +<ul> +<li> +<a href="#driver">Отладчик</a></li> + +<li> +<a href="#output">Вывод</a></li> +</ul> + +<h2> +<a NAME="driver"></a>Отладчик</h2> +В этом разделе вы можете указать отладчик, которым будете отлаживать программу. +<h4>Как вызвать GDB</h4> + +<blockquote>Введите команду для вызова gdb. Оставьте это поле пустым для вызова +gdb по умолчанию, указанного в +<a href="globaloptions.html">глобальных опциях</a>. Если вы занимаетесь +кросс-компиляцией и удаленной отладкой, то вы наверное захотите использовать +другой gdb, более подходящий для конкретной платформы. По умолчанию вызывается +<tt>gdb --fullname --nx</tt>. Не забудьте указать данные опции при изменении +используемого отладчика. Если вы их не укажите, KDbg не будет работать. +</blockquote> + +<h2> +<a NAME="output"></a>Вывод</h2> +В этом разделе вы можете указать степень эмуляции терминала, в которой будет +работать программа. +<h4>Нет ввода и вывод</h4> + +<blockquote>Отметьте эту опцию, если ваша программа не получает входных данных +с терминал и вы не хотите видеть то, что она выводит в стандартные потоки +вывода и диагностики. Все стандартные потоки (<tt>stdin</tt>, <tt>stdout</tt> и +<tt>stderr</tt>) перенаправляются в <tt>/dev/null</tt>.</blockquote> + +<h4>Только вывод, простая эмуляция терминала</h4> + +<blockquote>Отметьте эту опцию, если ваша программа не получает входных данных +с терминала (<tt>stdin</tt> будет перенаправлен в <tt>/dev/null</tt>), а вывод +(<tt>stdout</tt> и <tt>stderr</tt>) не требует сложной эмуляции терминала. +Вывод будет отображаться в <i>окне выовда</i>. + +<br><i>Важно:</i> Встроенный эмулятор терминала интерпретирует только символ +новой строки <tt>\n</tt> (ASCII 10) в перевод строки. Он <i>не</i> обрабатывает +символ перевода каретки <tt>\r</tt> (ASCII 13). Этого вполне достаточно для +отображения простых отладочных сообщений, которые обычно используются +разработчиками программ, использующих графический интерфейс.</blockquote> + +<h4>Полная эмуляция терминала</h4> + +<blockquote>Отметьте эту опцию, если ваша программа получает данные из +<tt>stdin</tt>, или вывод в <tt>stdout</tt> or <tt>stderr</tt> требует полной +эмуляции терминала. В этом случае будет использован эмулятор терминала, +указанный в <a href="globaloptions.html">глобальных опциях</a>.</blockquote> +</body> +</html> diff --git a/doc/ru/registers.html b/doc/ru/registers.html new file mode 100644 index 0000000..eb5c216 --- /dev/null +++ b/doc/ru/registers.html @@ -0,0 +1,31 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Содержимое регистров</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Содержимого Регистров</h1> +Всякий раз, когда происходит останов программы, +KDbg выводит содержимое регистров ЦПУ в соответсвующем окне. Для того, чтобы +отобразить данное окно, выберите <i>Вид|Регистры</i>. +<p>Окно содержит 3 колонки: +<ol> +<li>Колонка <i>Регистр</i> выводит имя регистра.</li> + +<li>Колонка <i>Значение</i> выводит содержимое регистров в более или менее +необработанном формате. Необработанный формат обычно выводит шестнадцатеричное +значение, даже для содержимого регистров с плавающей точкой.</li> + +<li>Колонка <i>Декодированное значение</i> выводит содержимое регистров +в декодированной форме. Для арифметических регистров это +обычно знаковое десятичное значение, для регистров с плавающей точкой +– число с плавающей точкой, регистры флагов декодируются в имена +флагов.</li> +</ol> +С помощью правой клавиши мыши можно вызвать меню, которое позволяет +установить формат значений во второй колонке. +</body> +</html> diff --git a/doc/ru/sourcecode.html b/doc/ru/sourcecode.html new file mode 100644 index 0000000..fba5f3b --- /dev/null +++ b/doc/ru/sourcecode.html @@ -0,0 +1,31 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство пользователя - Исходный Текст</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Исходного Текста</h1> +Данное окно является главным и всегда отображается. +<p>Окно исходного текста содержит исходный текст программы. Слева от +каждой строки текста находится "активная область". Она содержит +указатель на строку исходного текста, которая выполняется в текущий момент +времени, а также указывает те строки исходного текста, которые содержат +точки останова. +<p>Новые точки останова устанавливаются нажатием левой клавиши мыши в +"активной области". Существующая точка останова может быть активирована +или дезактивирована с помощью средней клавиши мыши. +<p>Может быть нажат знак плюса '+' между "активной областью" и строкой +исходного текста. Это приведет к выводу ассемблерного кода для данной +строки. Чтобы скрыть ассемблерный код, необходимо +нажать клавишу '-'. +<p>Обычно окна исходного текста открываются автоматически. Чтобы +открыть файл с исходным текстом вручную, нужно нажать правую +кнопку мыши и выбрать <i>Открыть исходный текст</i> или +выбрать <i>Файл|Открыть исходный текст</i>. +<p>Для переключения между несколькими файлами с исходными текстами, +выберите нужный файл в меню <i>Окно</i>. +</body> +</html> diff --git a/doc/ru/stack.html b/doc/ru/stack.html new file mode 100644 index 0000000..082ba9b --- /dev/null +++ b/doc/ru/stack.html @@ -0,0 +1,23 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Стек</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Стека</h1> +Окно стека вызывается выбором пункта меню <i>Вид|Стек</i>. Окно стека содержит +списки областей стека (stack frames), например, функции, которые были вызваны, +но еще не завершились. +<p>Самая внутренняя (вложенная) область (место текущего исполнения программы) +находится в самом верху списка. +<p>Для переключения на другую область стека, просто выберите эту область +мышкой. <a href="sourcecode.html">Окно исходных текстов</a> отображает строки +исходных текстов, которые исполняются программой в текущий момент, а +<a href="localvars.html">окно локальных переменных</a> и +<a href="watches.html">окно отслеживаемых выражений</a> изменяются, отображая +локальные переменные выбранной области стека. +</body> +</html> diff --git a/doc/ru/threads.html b/doc/ru/threads.html new file mode 100644 index 0000000..674c309 --- /dev/null +++ b/doc/ru/threads.html @@ -0,0 +1,38 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Потоки</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Потоков</h1> +Окно потоков можно вывести, выбрав пункт меню <i>Вид|Потоки</i>. В окне потоков +отображается список активных потоков программы. +<p><b><i>Замечание:</i></b> Отладка многопоточных программ должна +поддерживаться используемой версией gdb - это не является функцией KDbg. Для +Linux-систем лучше использовать gdb5. +<p>Содержимое окна потоков обновляется при каждой остановке программы +отладчиком. (Т.е. в окне <i>не</i> отображается состояние потоков во время +работы программы.) +<p>Первая колонка отображает идентификатор потока, вторая указывает на текущее +место исполнения данного потока. +<p>Маркер напротив одной из строк указывает на текущий <i>активный</i> поток: +<ul> +<li> +<a href="stack.html">Окно стека</a> отображает стек вызовов активного потока. +</li> + +<li><a href="localvars.html">Окно локальных переменных</a> отображает локальные +переменные активного потока.</li> + +<li><a href="watches.html">Окно просмотра</a> использует локальные переменные +потока для проверки выражений.</li> +</ul> +Если кликнуть на другой поток в списке, то он станет активным и соответственно +будет изменено содержимое других окон. В частности, +<a href="sourcecode.html">окно исходных кодов</a> отобразит место, где текущий +поток был остановлен. +</body> +</html> diff --git a/doc/ru/tips.html b/doc/ru/tips.html new file mode 100644 index 0000000..7739496 --- /dev/null +++ b/doc/ru/tips.html @@ -0,0 +1,43 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Полезные Советы</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Полезные Советы</h1> + +<ul> +<li>Всегда устанавливайте переменную окружения <tt>LD_BIND_NOW=1</tt> в +системах, использующих библиотеку glibc2. + +Установка переменных окружения описана +<a href="argspwdenv.html#Environment">здесь</a>.</li> + +<li>Вы можете использовать точки останова, как закладки: просто установите +точку останова и выключите ее. Позже вы сможете возвратиться к этой точке, +кликнув на нее два раза в списке точек останова (или просто выбрав ее и кликнув +на кнопку <i>Просмотреть Исходный Код</i>). Т.к. точки останова являются +постоянными (т.е. KDbg запоминает их расположение и восстанавливает в следующей +сессии), то при вызове вашей программы на отладку в следующий раз все точки +останова будут на месте. +</li> + +<li>Вы можете изменять значения переменных программы: в окне просмотра +переменных (внизу справа) введите присвоение <tt>var.member=17</tt> и кликните +по кнопке <i>Добавить</i>. Это приведет к немедленному изменению значения +переменной. Теперь вам необходимо удалить это выражение из списка (выбрав +его и кликнув на кнопку <i>Удалить</i>). Это необходимо потому, что просмотр +выражений осуществляется при каждом останове программы и этой переменной будет +присваиваться тоже значение снова и снова!</li> + +<li>Вы можете выводить значение переменных в окно просмотра в разных форматах, +используя модификаторы gdb перед указанием выводимой переменной. Например, +<tt>/x var.member</tt> выведет значение <tt>var.member</tt> в шеснадцатеричном +виде.</li> +</ul> + +</body> +</html> diff --git a/doc/ru/types.html b/doc/ru/types.html new file mode 100644 index 0000000..2d29941 --- /dev/null +++ b/doc/ru/types.html @@ -0,0 +1,126 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Таблицы Типов</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Таблица Типов KDbg</h1> +KDbg может отображать содержимое отдельно взятых членов структурированных типов +данных, таким образом отсутствует необходимость в раскрытии переменных в +<a href="localvars.html">окне локальных переменных</a> или в +<a href="watches.html">окне отслеживаемых выражений</a>. Информация о том, +переменная какого члена отображается, хранится в <i>таблицах типов</i>. Обычно +существует одна таблица на разделяемую библиотеку. +<p>Таблицы типов KDbg расположены в каталоге +<tt>$TDEDIR/share/apps/kdbg/types</tt>. Имена файло таблиц оканчиваются на +<tt>.kdbgtt</tt>. Например, таблица типов для <tt>libqt.so</tt> называется +<tt>qt.kdbgtt</tt>. +<p>Файлы таблиц типов соответствуют стандартному синтаксису файлов конфигурации +KDE. Файл содержит следующие группы: +<ul> +<li> +Группу <tt>[Type Table]</tt>, в которой перечислены типы и информация о том, +как отладчик может определить, слинкована ли программа с этой библиотекой.</li> + +<li>Группу на каждый прописанный тип, в которой содержится информация о том, +как KDbg должен отображать данный тип.</li> +</ul> +Для определения таблиц типов, применимых к отлаживаемой программе, KDbg +запрашивает список разделяемых библиотек, с которыми слинкована программа. +Затем он осуществляет поиск имен этих библиотек в таблицах типов в элементах +<tt>ShlibRE</tt>. Используются те таблицы, в которых были найдены +соответствующие имена библиотек. Если тип появляется в нескольких таблицах, то +неопределено, какое же из описаний будет выбрано. +<h2>Группа <tt>[Type Table]</tt></h2> +Эта группа содержит следующие элементы: +<ul> +<li> +<tt>Types1</tt>, <tt>Types2</tt>, и тд. Эти элементы являются именами типов. +Каждый из них представляет собой разделенный запятыми список имен типов. В +каждом элементе может быть перечислено любое количество типов. (Имена типов +можно разбить на несколько строк, чтобы они строки не получались слишком +длинными.) В этих строках недопустимы символы пробела. Элементы должны +нумероваться последовательно (KDbg прекращает чтение на первом же пропуске), +однако элементы могут быть пусты (т.е. вообще не содержать типов). Иногда +порядок перечисления имен имеет значение (см. пример с <tt>Alias</tt> ниже). +</li> + +<li> +<tt>ShlibRE</tt>. KDbg использует этот элемент для определения, использовать +ли данную таблицу к текущей отлаживаемой программе. Для этого KDbg определяет +разделяемые библиотеки, используемые программой. Если хотя бы одна из них +совпадает со значением этого элемента, таблица используется. Используемые +регулярные выражения совпадают с регулярными выражениями TQt (метасимволы +<tt>.*?[]^$\</tt> распознаются обычным образом, однако отсутсвует возможность +группировать символы.)</li> + +<li> +<tt>LibDisplayName</tt>. Этот элемент используется в списках, в которых +доступные таблицы типов перечислены для указания данной таблицы типов.</li> + +<br><font size=-1>На данный момент это не используется.</font></ul> + +<h2>Группа типа</h2> +На каждый заявленый тип должна быть заведена группа, названная именем типа. +<font size=-1>На данный момент шаблоны С++ не поддерживаются.</font> +Каждая группа содержит следующие элементы: +<ul> +<li> +<tt>Display</tt> указывает, как KDbg должен отображать значение этого типа. +Строка может содержать от 1 до 5 символов '<tt>%</tt>'. Они заменяются на +результаты выражений, описанных в элементах <tt>Expr</tt><i>x</i>.</li> + +<li>Один или более <tt>Expr1</tt>, <tt>Expr2</tt>, и тд. Каждый из них должен +содержать <b>только одну</b> последовательность <tt>%s</tt>, которая будет +заменена выражением, чье значение необходимо получить. Такие выражения +передаются gdb, а результат заносится на место соответствующего символа +процента в элементе <tt>Display</tt>.</li> + +<li> +<tt>Alias</tt> указывает на тип-псевдоним. Если присутствует данная запись, то +с данным типом обходятся также, как с тем, на который он указывает. Этот +тип-псевдоним дожен быть описан перд ссылающимся на него типом в элементах +<tt>Types</tt><i>x</i> группы <tt>[Type Table]</tt>.</li> +</ul> +<font size=-1>На данный момент количество выражений для каждого типа ограничено +пятью. Это может быть с легкостью изменено, но я не рекомендую вообще +приближаться к данному рубежу - это только затормозить процесс отладки.</font> +<p>KDbg распознает специальное расширение, которое используется для вывода +строк TQt 2.0 в unicode: Если перед <tt>Expr</tt><i>x</i> стоит +<tt>/TQString::Data</tt>, подразумевается, что результат операции является +указателем на <tt>TQString::Data</tt>. Выводимое значение является строкой в +unicode, представленное <tt>TQString::Data</tt> (которое может быть +<tt>TQString::null</tt>, если это пустая строка TQt, или <tt>(null)</tt>, если +<tt>unicode</tt> член структуры является нулевым указателем). Для примера см. +<tt>qt2.kdbgtt</tt>. + +<p>Совет: Совсем необязательно описывать наследуемые типы, если они должны +обрабатываться также как и базовый класс - KDbg может определить наследование +и использовать описание типа первого (слева) базового класса. Вы можете +использовать элемент <tt>Alias</tt> для быстрого указания класса при +множественном наследовании, отличного от первого слева. +<h2>Пример</h2> +Этот пример показывает, как <tt>TQString</tt> и <tt>TQObject</tt> описаны в +<tt>qt.kdbgtt</tt>. Дополнительно определен <tt>TQTableView</tt>, ссылающийся +на <tt>TQObject</tt>. Этот пример применим к TQt 1.x, который расположен в +разделяемых библиотеках, имена которых оканчиваются как <tt>libqt.so.1</tt>. +<pre>[Type Table] +Types1=TQString +Types2=TQObject,TQTableView +LibDisplayName=libqt 1.x +ShlibRE=libqt\.so\.1$ +[TQString] +Display={ % } +Expr1=(%s).shd->data +[TQObject] +Display={ name=% #chld=% } +Expr1=(%s).objname +Expr2=(%s).childObjects->numNodes +[TQTableView] +Alias=TQObject</pre> +Замечание: гораздо безопаснее заключать <tt>%s</tt> в скобки. +</body> +</html> diff --git a/doc/ru/watches.html b/doc/ru/watches.html new file mode 100644 index 0000000..0953b7c --- /dev/null +++ b/doc/ru/watches.html @@ -0,0 +1,20 @@ +<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=koi8-r"> + <meta name="Author" content="Johannes Sixt"> + <title>KDbg - Руководство Пользователя - Отслеживаемые Выражения</title> +</head> +<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000"> +<a href="index.html">Содержание</a> +<h1>Окно Отслеживаемых Выражений</h1> +Окно отслеживаемых выражений вызывается выбором пункта меню +<i>Вид|Отслеживаемые Выражения</i>. Оно отображает произвольные выражения. +<p>Для добавления выражения, введите его в поле редактирования и нажмите Enter +или кликните на кнопку <i>Добавить</i>. Для удаления выражения, выберите его +(выбирайте корень выражения?) и кликните на кнопку <i>Del</i>. +<p>Отслеживаемые выражения сохраняются между сессиями отладки. Поэтому +рекомендуется удалять выражения, которыми вы уже не пользуетесь, т.к. это +повысит скорость отладки. +</body> +</html> |