home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Vectronix 2
/
VECTRONIX2.iso
/
FILES_01
/
TOSRACE.LZH
/
TOSTRACE
/
TOSTRACE.ANL
next >
Wrap
Text File
|
1986-02-06
|
17KB
|
320 lines
========================================
= Bedienungsanleitung zu Tostrace 2.6d =
========================================
1) Was ist denn das überhaupt für ein Programm?
===============================================
Tostrace ist ein Programm, welches die aktuell stattfindenden
Systemaufrufe des BIOS, XBIOS und des GEMDOS sowie Veränderungen an allen
dokumentierten Systemvariablen anzeigen kann. Tostrace ist also ein in
seiner Art völlig neues Hilfsmittel beim Debuggen eigener und beim
Analysieren von fremden Programmen. Solch ein Hilfsmittel ist vorwiegend
interessant für Programmierer und Leute, die gerne in den Tiefen des TOS
und fremder Programme "herumstochern".
Zugegebenerma₧en hört sich das ein wenig abstrakt an, deshalb will ich
versuchen, die praktische Verwendung an 3 Beispielen klar zu machen.
===========
Beispiel 1:
===========
Nehmen wir einmal an, wir haben ein nettes Programm, welches wir in
seiner "Minimalkonfiguration" starten wollen, um Speicherplatz auf
einer Ramdisk o.ä. zu sparen. Man lä₧t also dieses oder jenes File
weg, welches unnötig zu sein scheint. Oft weigert sich das nun
vieleicht etwas zu stark reduzierte Programm dann anzulaufen und gibt
eine nebulöse Fehlermeldung aus, die keinen Rückschlu₧ darüber
zulä₧t, welche Datei denn nun fehlt.
Oder ein ähnlicher Fall: Ein Programm läuft nur, wenn bestimmte
Dateien in bestimmten Ordnern zu finden sind. Leider hat man aber
keine Informationen darüber, wie diese hei₧en und wie sie
ineinandergeschachtelt sein müssen.
Die Lösung: Man nehme Tostrace und "setze" (genaue Vorgehnsweise wird
später erläutert) ihn auf die Systemfunktionen "Fsfirst" und "Fopen"
an. Wird nun eine Datei gesucht, landet man im Tostrace und sieht die
Funktionsaufrufe, die das Programm durchführt,um seine Dateien zu
laden. Tostrace wird dann etwa folgendes Ausgeben:
"Fopen(040FEE:"NICHTDA.DAT"/0000) PC=$03DD92 => $FFFFFFDE"
Was sagt uns das nun? Man kann dem entnehmen, da₧ tatsächlich ein
Versuch, eine Datei zu öffnen, gescheitert ist. Die Datei
"Nichtda.Dat" fehlt. Sie sollte gelesen werden (Modus 0 bei "Fopen").
Der Wert $FFFFFFDE ist die Fehlermeldungsnummer, die "Fopen"
zurückliefert. Hier lautet sie, wie man aus den Dokumentationen der
Betriebssystemfunktionen des TOS entnehmen kann, "File not found".
===========
Beispiel 2:
===========
Es besteht der Verdacht, da₧ sich ein Virus im System eingenistet
hat. Aktiviert man Tostrace, dann kann man sich genau ansehen,
welches Unwesen der Virus treibt, und kennt dessen Sorte. Mir ist
während der Entwicklung von Tostrace zum Beispiel folgendes passiert:
Ich legte eine Diskette ein und tippte wie immer auf die Escape-
Taste, damit das Fenster des Laufwerks "A:" vom Desktop aktualisiert
wird. Ein Umschalten auf den Tostrace-Schirm ergab in etwa folgendes
Bild:
Fsfirst("*.*"/0000) PC=$XXXXX (1)
Protobt(...) PC=$XXXXX (2)
Flopwr(...) PC=$XXXXX (3)
=> 00000000 (4)
Es wurde also wie gewöhnlich beim Einlesen einer Diskette die
Systemroutine "Fsfirst" aufgerufen, aber "Fsfirst" erzeugte auf
einmal einen neuen Bootsektor mit der Funktion "Protoboot". Dann
wurde der auch noch, ganz ohne da₧ so etwas befohlen worden wäre, mit
dem Befehl "Flopwr" auf meine jungfräuliche Diskette geschrieben.
Klarer Fall! Ein "BPL"-Bootsektorvirus hatte mich erwischt! In den
nächsten Stunden war ich dann natürlich damit beschäftigt, meinen
Diskettenbestand zu "entseuchen".
===========
Beispiel 3:
===========
Man schreibt ein Assemblerprogramm, das an einer Stelle den freien
Speicher ermitteln möchte und gibt selbiges ein:
Eingabe: Korrekt wäre:
... ...
move.l #-1,-(a7) move.l #-1,-(a7)
move.w #72,-(a7) move.w #73,-(a7)
trap #1 trap #1
addq.l #6,a7 addq.l #6,a7
move.l d0,freeram move.l d0,freeram
... ...
Der Unterschied besteht darin, da₧ die Funktionsnummer des "Malloc"-
Aufrufs (72) versehentlich falsch eingegeben wurde (73). Der
entstehende Funktionsaufruf bedeutet nun etwas ganz anderes, nämlich
"Mfree". Versucht man nun mit herkömmlichen Debugging-Hilsmitteln
hinter die Ursache des seltsamen Verhaltens des Programms zu kommen,
wird man das Problem nicht so schnell erkennen können wie mit
Tostrace. Er wird nämlich in einem Fall Malloc, im anderen Mfree
anzeigen und damit wahrscheinlich erst ein ungläubiges Staunen und
dann ein gro₧es "AHA!" beim Programmierer erzeugen.
Ich hoffe damit ist so ungefähr geklärt, welche Dienste Tostrace leisten
kann.
2) Bedienung von Tostrace
=========================
Tostrace kann entweder ganz normal als Programm oder im Auto-Ordner
gestartet werden. Es installiert sich dann resident im Speicher, sofern
genug freier Speicherplatz (ca. 200K) vorhanden ist und der ST sich im
monochromen Modus befindet.
Nach dem Start von Tostrace sehen Sie wahrscheinlich die Meldung, da₧ kein
Font gefunden wurde, und da₧ keine Konfigurationsdatei vorhanden ist. Das
hat aber nichts zu bedeuten, da diese Dateien nur falls vorhanden geladen
werden.
Für den Interessierten: Wenn Tostrace die Datei "FONT" findet, dann liest
er daraus seinen Zeichensatz ein. Dieser Zeichensatz mu₧ das Degas-
/Olifont-/Tempus-Format besitzen (d.h. 4096 Bytes lang, 16 Bytes /
Buchstabe). Findet Tostrace die Datei "TT_CONF", dann liest Tostrace
daraus seine aktuelle Konfiguration ein (s.u.).
Nach Tastendruck befinden Sie sich nun auf dem Desktop und können normal
mit dem ST arbeiten. Drückt man nun CTRL/links Shift/rechts Shift, dann
wird der Tostrace-Schirm eingeblendet, auf dem nun die gerade
stattfindenden Systemaufrufe und Änderungen der dokumentierten
Systemvariablen zu sehen sind. Mit einem weiteren Druck dieser
Tastenkombination wird wieder der normale Desktop-Schirm eingeblendet.
Nun kann es sein, da₧ Ihnen die Ausgabe des Tostrace-Schirms etwas zu
schnell am Schirm "vorbeirauscht". Das wäre kein Wunder, denn die
Tostrace-Bildschirmausgabe arbeitet nicht mit Scrolling, sondern mit
direktem Umprogrammieren des Video-Chips. Daher ist die
Ausgabegeschwindigkeit des Tostrace wohl die schnellstmögliche Textausgabe
auf dem Atari überhaupt! Wo war ich stehengeblieben? ... Ah ja! ... Durch
Drücken von Alternate kann man den ST anhalten und sich die Systemaufrufe
genauer ansehen. Drückt man nun links-Shift, so wird immer genau eine
Zeile ausgegeben und dann erneut gewartet. Mit erneutem Drücken von
Alternate geht's dann wieder in voller Geschwindigkeit weiter.
Nun gibt es noch die speziellen Fähigkeiten von Tostrace, die vom
Tostrace-Menue aus aktiviert werden können.
3) Das Tostrace-Menue
=====================
Das TT-Menue kann nur erreicht werden, wenn zu dem bewu₧ten Augenblick des
Tastendrückens von Ctrl/Alternate (erst CTRL, dann ALT drücken!)
Interrupts erlaubt sind. Es wird also nicht klappen, wenn zum Beispiel
gerade ein Floppy-Zugriff oder ein Lesen eines Buchstabens von der
Tastatur stattfindet. Im Allgemeinen wird sich Tostrace aber dann so mit
seinem Menue melden:
Tostrace-Menue:
===============
(A) Tostrace ausschalten
(B) Konfigurationsdatei laden
(C) Konfigurationsdatei speichern
(D) Funktionsübersicht ausgeben
(E) Funktionskonfiguration ändern
(F) Fälschtabelle ändern
(G) Systeminformation ausgeben
(H) Kaltstart
(I) Reset-residente Routinen suchen
(J) Systemvariablenbeobachtung ein/ausschalten
(Q) Tostrace-Menue verlassen
Ihre Wahl =>?
Tostrace erwartet nun einen Tastendruck (A-J,Q) von Ihnen. Drücken Sie
"Q", dann wird das Tostrace-Menue verlassen, was mit einer entsprechenden
Meldung quittiert wird. Die Erläuterung zu den anderen Optionen folgt
jetzt:
B) Zu jeder Systemfunktion des BIOS, XBIOS oder GEMDOS besitzt
Tostrace Flaggen, die seine Aufgaben bzgl. dieser Funktion bestimmen
(näheres bei D)-E)). Dies Funktionskonfiguration kann mit dieser
Option auf Diskette in die Datei "TT_CONF" gespeichert werden.
Achtung: Tostrace speichert die Datei in den gerade aktuellen Pfad!
C) Hiermit können die Einstellungen aus B) restauriert werden.
D) Jede Systemfunktion besitzt folgende Flaggen, die festlegen, wie
Tostrace mit dieser Funktion verfährt:
1) Funktion anzeigen. Ist diese Flagge 1, dann wird diese
Funktion im Tostrace-Protokoll angezeigt. Sonst bleibt sie
unsichtbar. Dies ist sinnvoll bei dauernd aufgerufenen, sehr
"langweiligen" Funktionen wie "Mediach" oder "Cconis", die die
Übersichtlichkeit der Ausgabe beeinträchtigen. Die
Voreinstellung von Tostrace ist bei manchen dieser Funktionen
auf "Aus"!
2) Funktionsergebnis anzeigen. Ist diese Flagge 1, dann wird das
Ergebnis dieser Funktion angezeigt. Sinnvoll ist diese Option
natürlich nur, wenn auch 1) angewählt ist. Andernfalls stehen
"beziehungslose" Funktionsergebnisse im Tostrace-Schirm herum.
Achtung: Manche Funktionen haben kein Ergebnis! Wer sich zum
Beispiel das Ergebnis von "Pterm" (beendet ein Programm und
kehrt nie zurück!) ansehen will, wird einen bösen Crash
erleiden!!!
3) Bei Funktion anhalten. Setzt man diese Flagge auf 1, dann
wird Tostrace beim Auftreten dieses Funktionsaufrufs das
laufende Programm anhalten und auf den Tostrace-Schirm schalten.
Au₧erdem wird Tostrace in den Warte-Modus (s.o.) versetzt.
4) Funktionswert fälschen. Mit dieser sehr gewagten Option kann
der Wert einer Systemfunktion bewu₧t gefälscht werden. Achtung:
Bitte diese Option nur reiflichst überlegt einsetzen. Sonst wird
der ST sich - gelinde gesagt - ziemlich sonderbar verhalten.
Wählt man diese Funktion trotzdem an, dann wird man nach dem
Index in der Fälschtabelle gefragt. Die Fälschtabelle beinhaltet
16 Long-Werte (32 Bit / Wert). Man sollte sich also einen Index
(0-15) aussuchen und später in der Fälschtabelle auf den
gewünschten gefälschten Wert setzen.
Diese Funktion zeigt nun die aktuelle Konfiguration der
Systemfunktionen des BIOS, GEMDOS oder XBIOS an.
E) Tut das gleiche wie D), erlaubt aber das Editieren der Flaggen!
F) Hiermit kann die Fälschtabelle editiert werden (siehe D) 4) ).
G) Dieser Befehl veranla₧t Tostrace dazu, Informationen über wichtige
Sprungvektoren des 68000-Prozessors sowie über die Speicheraufteilung
des ST auszugeben.
H) Achtung: Ein Kaltstart entspricht in seiner Wirkung einem
Aus/Anschalten des Rechners. Es wird wirklich jedes(!) Byte im
Speicher gelöscht. Damit kann man sich also reset-residente Routinen
(Ramdisk-Treiber, Viren etc.) endgültig vom Leibe schaffen. Diese
Methode ist schneller als die Aus/An-Methode und schon auch den
ohnehin sehr labilen Netzschalter des Ataris.
Zur Sicherheit kann diese Option nur nach erneuter Bestätigung
wirklich ausgeführt werden.
I) Reset-residente Routinen werden mit diesem Befehl gesucht. Genauer
gesagt, werden Routinen gesucht, die nach dem von Atari
undokumentierten Verfahren (siehe ST-Profibuch S. 179) installiert
wurden. Darunter fällt zum Beispiel der Flexdisk-Treiber etc.
Achtung: Darüber hinaus gibt es noch ein anderes Verfahren, Routinen
resetfest zu installieren: Man hängt den Reset-Vektor um! Diese
Methode wird hier jedoch nicht angezeigt! Ansehen kann man sich den
Reset-Vektor aber mit G).
J) Hiermit lä₧t sich die Systemvariablenbeobachtung an- und
ausschalten. Die Systemvariablenüberwachung ist eine recht aufwendige
Operation. Bei jedem Funktionsaufruf werden nämlich alle
Systemvariablen mit ihren alten Werten verglichen. Da oft relativ
viele Funktionsaufrufe/Zeiteinheit auftreten, ist man mit dieser
Methode zwar immer "Up to date", mu₧ aber ziemliche Einbu₧en in
Punkto Rechengeschwindigkeit hinnehmen. Ich empfehle also, die
Systemvariablenüberwachung nur dann zu aktivieren, wenn Sie an den
Änderungen der Systemvariablen wirklich interessiert sind!
Q) Das Tostrace-Menue wird hiermit verlassen!
Noch ein Tip von mir, um von Programmen aus, die gerade auf eine Eingabe
von der Tastatur warten, in das Tostrace-Menue zu gelangen: Oft hilft es,
zuerst den Tostrace-Schirm einzublenden, dann auf Ctrl/Alternate und dann
auf eine andere Taste zu drücken. Sobald das laufende Programm sein
Zeichen erhalten hat, landet man dann i.A. im Tostrace-Menue.
4) Probleme mit Tostrace
========================
Nach meiner Erfahrung laufen so ziemlich alle Programme mit Tostrace
zusammen. Probleme stellten sich allerdings bei GFA-Basic ein. Dieser
Interpreter setzt (!) nämlich einfach den Status der Tasten Control,
Alternate, l-Shift, r-Shift und Caps-Lock auf die ihm genehmen Werte,
selbst, wenn diese den gerade anderen Zustand besitzen. Dies führt dazu,
da₧ der Warte-Modus des Tostrace etwas durcheinandergerät. Einzig mögliche
Lösung dieses Problems scheint mir darin zu bestehen, einfach mal wild auf
diesen Tasten herumzudrücken, bis Tostrace aus seiner verunglückten
Warteschleife herauskommt.
5) Schlu₧wort
=============
Ich hoffe mit diesem Programm eine neue, verbesserte Möglichkeit zum
Debuggen von eigenen und zum Analysieren von fremden Programmen geschaffen
zu haben. Natürlich gibt es viele Verbesserungsmöglichkeiten des
Programms, die interessant wären. Da wäre zum Beispiel das Tracen von GEM-
Routinen (AES , VDI), sowie das Tracen von Line-A-Aufrufen oder das
Mitprotokollieren auf dem Drucker etc.
Leider habe ich im Augenblick (8/89 - 11/89) wenig Zeit, um weiter-
zuprogrammieren. Aber ich vermute, da₧ es ab Anfang '90 eine neue Version
von Tostrace mit diesen Fähigkeiten bei mir für ca. DM 75,- geben wird.
Wer daran interessiert ist, kann sich ja dann mal bei mir melden. (Bitte
erst anfragen! Ob's klappt kann ich jetzt noch nicht mit Sicherheit
sagen!)
Natürlich bin ich auch immer an Anregungen für neue Tostrace-Fähigkeiten,
Meldungen von Bugs in Tostrace, u.ä. interessiert.
Viel Erfolg beim Tracen wünschen:
Stefan Becker Ulrich Lemke
Trippstadter Str. 121 / 007 Wilh.-Raabe-Str. 26
6750 Kaiserslautern 6750 Kaiserslautern
P.S: Auch möchte ich mich noch für Tips und Anregungen bei D. Sabiwalsky
und E. Dick bedanken. Au₧erdem natürlich für die Idee zu Tostrace und
wichtige Hilfe beim Programmieren bei Urich Lemke.
Bedanken möchte ich mich auch bei Thomas Tempelmann für seinen sehr guten
Maschinensprachemonitor "Templmon", dem ich jedem zur Zusammenarbeit mit
Tostrace und auch überhaupt empfehlen möchte.
Au₧erdem für inspirierende Musik von: Doors, Free, Jimi Hendrix, Janis
Joplin, Rolling Stones, Van Morrison, Cream, Rory Gallagher, Traffic, Cold
Chisel, und so weiter... "Keep on rockin!"