home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / TOSRACE.LZH / TOSTRACE / TOSTRACE.ANL next >
Text File  |  1986-02-06  |  17KB  |  320 lines

  1.  
  2.                  ========================================
  3.                  = Bedienungsanleitung zu Tostrace 2.6d =
  4.                  ========================================
  5.  
  6. 1) Was ist denn das überhaupt für ein Programm?
  7. ===============================================
  8.  
  9. Tostrace   ist   ein  Programm,   welches   die   aktuell   stattfindenden 
  10. Systemaufrufe des BIOS,  XBIOS und des GEMDOS sowie Veränderungen an allen 
  11. dokumentierten  Systemvariablen anzeigen kann.  Tostrace ist also  ein  in 
  12. seiner  Art  völlig  neues  Hilfsmittel beim  Debuggen  eigener  und  beim 
  13. Analysieren von fremden Programmen.  Solch ein Hilfsmittel ist  vorwiegend 
  14. interessant für Programmierer und Leute,  die gerne in den Tiefen des  TOS 
  15. und fremder Programme "herumstochern".
  16.  
  17. Zugegebenerma₧en  hört sich das ein wenig abstrakt an,  deshalb  will  ich 
  18. versuchen, die praktische Verwendung an 3 Beispielen klar zu machen.
  19.  
  20.      ===========
  21.      Beispiel 1:
  22.      ===========
  23.  
  24.      Nehmen wir einmal an,  wir haben ein nettes Programm,  welches wir in 
  25.      seiner  "Minimalkonfiguration" starten wollen,  um Speicherplatz  auf 
  26.      einer Ramdisk o.ä.  zu sparen.  Man lä₧t also dieses oder jenes  File 
  27.      weg,  welches  unnötig  zu sein scheint.  Oft weigert  sich  das  nun 
  28.      vieleicht etwas zu stark reduzierte Programm dann anzulaufen und gibt 
  29.      eine  nebulöse  Fehlermeldung  aus,  die  keinen  Rückschlu₧  darüber 
  30.      zulä₧t, welche Datei denn nun fehlt.
  31.  
  32.      Oder  ein  ähnlicher Fall:  Ein Programm läuft  nur,  wenn  bestimmte 
  33.      Dateien  in bestimmten Ordnern zu finden sind.  Leider hat  man  aber 
  34.      keine   Informationen  darüber,   wie  diese  hei₧en  und   wie   sie 
  35.      ineinandergeschachtelt sein müssen.
  36.  
  37.      Die Lösung: Man nehme Tostrace und "setze" (genaue Vorgehnsweise wird 
  38.      später erläutert) ihn auf die Systemfunktionen "Fsfirst" und  "Fopen" 
  39.      an. Wird nun eine Datei gesucht, landet man im Tostrace und sieht die 
  40.      Funktionsaufrufe,  die  das Programm durchführt,um seine  Dateien  zu 
  41.      laden. Tostrace wird dann etwa folgendes Ausgeben:
  42.  
  43.      "Fopen(040FEE:"NICHTDA.DAT"/0000) PC=$03DD92 => $FFFFFFDE"
  44.  
  45.      Was  sagt uns das nun?  Man kann dem entnehmen,  da₧ tatsächlich  ein 
  46.      Versuch,   eine  Datei  zu  öffnen,   gescheitert  ist.   Die   Datei 
  47.      "Nichtda.Dat" fehlt. Sie sollte gelesen werden (Modus 0 bei "Fopen"). 
  48.      Der  Wert  $FFFFFFDE  ist  die  Fehlermeldungsnummer,   die   "Fopen" 
  49.      zurückliefert.  Hier lautet sie,  wie man aus den Dokumentationen der 
  50.      Betriebssystemfunktionen des TOS entnehmen kann, "File not found".
  51.  
  52.      ===========
  53.      Beispiel 2:
  54.      ===========
  55.  
  56.      Es  besteht der Verdacht,  da₧ sich ein Virus im  System  eingenistet 
  57.      hat.  Aktiviert  man  Tostrace,  dann kann man  sich  genau  ansehen, 
  58.      welches  Unwesen der Virus treibt,  und kennt dessen Sorte.  Mir  ist 
  59.      während der Entwicklung von Tostrace zum Beispiel folgendes passiert:
  60.  
  61.      Ich  legte  eine Diskette ein und tippte wie immer  auf  die  Escape-
  62.      Taste,  damit das Fenster des Laufwerks "A:" vom Desktop aktualisiert 
  63.      wird.  Ein Umschalten auf den Tostrace-Schirm ergab in etwa folgendes 
  64.      Bild:
  65.  
  66.      Fsfirst("*.*"/0000) PC=$XXXXX           (1)
  67.           Protobt(...) PC=$XXXXX             (2)
  68.           Flopwr(...) PC=$XXXXX              (3)
  69.      => 00000000                             (4)
  70.  
  71.      Es wurde  also  wie  gewöhnlich  beim  Einlesen  einer  Diskette  die 
  72.      Systemroutine  "Fsfirst"  aufgerufen,  aber  "Fsfirst"  erzeugte  auf 
  73.      einmal  einen  neuen Bootsektor mit der  Funktion  "Protoboot".  Dann 
  74.      wurde der auch noch, ganz ohne da₧ so etwas befohlen worden wäre, mit 
  75.      dem Befehl "Flopwr" auf meine jungfräuliche Diskette geschrieben.
  76.  
  77.      Klarer Fall!  Ein "BPL"-Bootsektorvirus hatte mich erwischt!  In  den 
  78.      nächsten  Stunden war ich dann natürlich  damit  beschäftigt,  meinen 
  79.      Diskettenbestand zu "entseuchen".
  80.  
  81.      ===========
  82.      Beispiel 3:
  83.      ===========
  84.  
  85.      Man  schreibt ein Assemblerprogramm,  das an einer Stelle den  freien  
  86.      Speicher ermitteln möchte und gibt selbiges ein:
  87.  
  88.      Eingabe:                                Korrekt wäre:
  89.  
  90.      ...                                     ...
  91.      move.l    #-1,-(a7)                     move.l    #-1,-(a7)
  92.      move.w    #72,-(a7)                     move.w    #73,-(a7)
  93.      trap      #1                            trap      #1
  94.      addq.l    #6,a7                         addq.l    #6,a7
  95.      move.l    d0,freeram                    move.l    d0,freeram
  96.      ...                                     ...
  97.  
  98.      Der Unterschied besteht darin,  da₧ die Funktionsnummer des "Malloc"-
  99.      Aufrufs  (72)  versehentlich  falsch  eingegeben  wurde   (73).   Der 
  100.      entstehende Funktionsaufruf bedeutet nun etwas ganz anderes,  nämlich 
  101.      "Mfree".  Versucht  man nun mit  herkömmlichen  Debugging-Hilsmitteln 
  102.      hinter die Ursache des seltsamen Verhaltens des Programms zu  kommen, 
  103.      wird  man  das  Problem  nicht so schnell  erkennen  können  wie  mit 
  104.      Tostrace.  Er  wird nämlich in einem Fall Malloc,  im  anderen  Mfree 
  105.      anzeigen  und damit wahrscheinlich erst ein ungläubiges Staunen   und 
  106.      dann ein gro₧es "AHA!" beim Programmierer erzeugen.
  107.  
  108. Ich hoffe damit ist so ungefähr geklärt,  welche Dienste Tostrace  leisten 
  109. kann.  
  110.  
  111. 2) Bedienung von Tostrace
  112. =========================
  113.  
  114. Tostrace  kann  entweder  ganz normal als  Programm  oder  im  Auto-Ordner 
  115. gestartet werden.  Es installiert sich dann resident im  Speicher,  sofern 
  116. genug  freier Speicherplatz (ca.  200K) vorhanden ist und der ST  sich  im 
  117. monochromen Modus befindet.
  118.  
  119. Nach dem Start von Tostrace sehen Sie wahrscheinlich die Meldung, da₧ kein 
  120. Font gefunden wurde,  und da₧ keine Konfigurationsdatei vorhanden ist. Das 
  121. hat aber nichts zu bedeuten,  da diese Dateien nur falls vorhanden geladen 
  122. werden.
  123. Für den Interessierten:  Wenn Tostrace die Datei "FONT" findet, dann liest 
  124. er  daraus  seinen  Zeichensatz ein.  Dieser Zeichensatz  mu₧  das  Degas-
  125. /Olifont-/Tempus-Format  besitzen  (d.h.  4096  Bytes  lang,  16  Bytes  / 
  126. Buchstabe).  Findet  Tostrace  die Datei "TT_CONF",  dann  liest  Tostrace 
  127. daraus seine aktuelle Konfiguration ein (s.u.).
  128.  
  129. Nach  Tastendruck befinden Sie sich nun auf dem Desktop und können  normal 
  130. mit dem ST arbeiten.  Drückt man nun CTRL/links Shift/rechts  Shift,  dann 
  131. wird   der   Tostrace-Schirm  eingeblendet,   auf  dem  nun   die   gerade 
  132. stattfindenden    Systemaufrufe   und   Änderungen   der    dokumentierten 
  133. Systemvariablen   zu  sehen  sind.   Mit  einem  weiteren   Druck   dieser 
  134. Tastenkombination wird wieder der normale Desktop-Schirm eingeblendet.
  135.  
  136. Nun  kann  es sein,  da₧ Ihnen die Ausgabe des Tostrace-Schirms  etwas  zu 
  137. schnell  am  Schirm  "vorbeirauscht".  Das  wäre  kein  Wunder,  denn  die 
  138. Tostrace-Bildschirmausgabe  arbeitet  nicht  mit  Scrolling,  sondern  mit 
  139. direktem    Umprogrammieren    des    Video-Chips.     Daher    ist    die 
  140. Ausgabegeschwindigkeit des Tostrace wohl die schnellstmögliche Textausgabe 
  141. auf dem Atari überhaupt!  Wo war ich stehengeblieben? ... Ah ja! ... Durch 
  142. Drücken von Alternate kann man den ST anhalten und sich die  Systemaufrufe 
  143. genauer  ansehen.  Drückt man nun links-Shift,  so wird immer  genau  eine 
  144. Zeile  ausgegeben  und  dann erneut gewartet.  Mit  erneutem  Drücken  von 
  145. Alternate geht's dann wieder in voller Geschwindigkeit weiter.
  146.  
  147. Nun  gibt  es  noch  die speziellen  Fähigkeiten  von  Tostrace,  die  vom 
  148. Tostrace-Menue aus aktiviert werden können.
  149.  
  150. 3) Das Tostrace-Menue
  151. =====================
  152.  
  153. Das TT-Menue kann nur erreicht werden, wenn zu dem bewu₧ten Augenblick des 
  154. Tastendrückens   von  Ctrl/Alternate  (erst  CTRL,   dann  ALT   drücken!) 
  155. Interrupts  erlaubt sind.  Es wird also nicht klappen,  wenn zum  Beispiel 
  156. gerade  ein  Floppy-Zugriff  oder  ein Lesen  eines  Buchstabens  von  der 
  157. Tastatur stattfindet.  Im Allgemeinen wird sich Tostrace aber dann so  mit 
  158. seinem Menue melden:
  159.  
  160. Tostrace-Menue:
  161. ===============
  162.      (A) Tostrace ausschalten
  163.      (B) Konfigurationsdatei laden
  164.      (C) Konfigurationsdatei speichern
  165.      (D) Funktionsübersicht ausgeben
  166.      (E) Funktionskonfiguration ändern
  167.      (F) Fälschtabelle ändern
  168.      (G) Systeminformation ausgeben
  169.      (H) Kaltstart
  170.      (I) Reset-residente Routinen suchen
  171.      (J) Systemvariablenbeobachtung ein/ausschalten
  172.      (Q) Tostrace-Menue verlassen
  173.  
  174. Ihre Wahl =>?
  175.  
  176. Tostrace  erwartet nun einen Tastendruck (A-J,Q) von  Ihnen.  Drücken  Sie 
  177. "Q",  dann wird das Tostrace-Menue verlassen, was mit einer entsprechenden 
  178. Meldung  quittiert  wird.  Die Erläuterung zu den anderen  Optionen  folgt 
  179. jetzt:
  180.  
  181.      B)  Zu  jeder  Systemfunktion des BIOS,  XBIOS  oder  GEMDOS  besitzt 
  182.      Tostrace Flaggen,  die seine Aufgaben bzgl. dieser Funktion bestimmen 
  183.      (näheres  bei  D)-E)).  Dies Funktionskonfiguration kann  mit  dieser 
  184.      Option  auf  Diskette  in die  Datei  "TT_CONF"  gespeichert  werden. 
  185.      Achtung: Tostrace speichert die Datei in den gerade aktuellen Pfad!
  186.  
  187.      C) Hiermit können die Einstellungen aus B) restauriert werden.
  188.  
  189.      D) Jede Systemfunktion besitzt folgende Flaggen,  die festlegen,  wie 
  190.      Tostrace mit dieser Funktion verfährt:
  191.  
  192.           1)  Funktion  anzeigen.  Ist diese Flagge  1,  dann  wird  diese 
  193.           Funktion  im  Tostrace-Protokoll  angezeigt.  Sonst  bleibt  sie 
  194.           unsichtbar.  Dies  ist sinnvoll bei dauernd  aufgerufenen,  sehr 
  195.           "langweiligen" Funktionen wie "Mediach" oder "Cconis",  die  die 
  196.           Übersichtlichkeit    der    Ausgabe     beeinträchtigen.     Die 
  197.           Voreinstellung  von Tostrace ist bei manchen  dieser  Funktionen 
  198.           auf "Aus"!
  199.  
  200.           2) Funktionsergebnis anzeigen. Ist diese Flagge 1, dann wird das 
  201.           Ergebnis  dieser Funktion angezeigt.  Sinnvoll ist diese  Option 
  202.           natürlich nur,  wenn auch 1) angewählt ist.  Andernfalls  stehen 
  203.           "beziehungslose"  Funktionsergebnisse im Tostrace-Schirm  herum. 
  204.           Achtung:  Manche  Funktionen haben kein Ergebnis!  Wer sich  zum 
  205.           Beispiel  das  Ergebnis von "Pterm" (beendet  ein  Programm  und 
  206.           kehrt  nie  zurück!)  ansehen  will,   wird  einen  bösen  Crash 
  207.           erleiden!!!
  208.  
  209.           3)  Bei Funktion anhalten.  Setzt man diese Flagge auf  1,  dann 
  210.           wird   Tostrace  beim  Auftreten  dieses  Funktionsaufrufs   das 
  211.           laufende Programm anhalten und auf den Tostrace-Schirm schalten. 
  212.           Au₧erdem wird Tostrace in den Warte-Modus (s.o.) versetzt.
  213.  
  214.           4) Funktionswert fälschen.  Mit dieser sehr gewagten Option kann 
  215.           der Wert einer Systemfunktion bewu₧t gefälscht werden.  Achtung: 
  216.           Bitte diese Option nur reiflichst überlegt einsetzen. Sonst wird 
  217.           der ST sich - gelinde gesagt - ziemlich sonderbar verhalten.
  218.           Wählt  man diese Funktion trotzdem an,  dann wird man  nach  dem 
  219.           Index in der Fälschtabelle gefragt. Die Fälschtabelle beinhaltet 
  220.           16 Long-Werte (32 Bit / Wert).  Man sollte sich also einen Index 
  221.           (0-15)  aussuchen  und  später  in  der  Fälschtabelle  auf  den 
  222.           gewünschten gefälschten Wert setzen.
  223.  
  224.      Diese   Funktion   zeigt   nun   die   aktuelle   Konfiguration   der 
  225.      Systemfunktionen des BIOS, GEMDOS oder XBIOS an.
  226.  
  227.      E) Tut das gleiche wie D), erlaubt aber das Editieren der Flaggen!
  228.  
  229.      F) Hiermit kann die Fälschtabelle editiert werden (siehe D) 4) ).
  230.  
  231.      G) Dieser Befehl veranla₧t Tostrace dazu, Informationen über wichtige 
  232.      Sprungvektoren des 68000-Prozessors sowie über die Speicheraufteilung 
  233.      des ST auszugeben.
  234.  
  235.      H)  Achtung:   Ein  Kaltstart  entspricht  in  seiner  Wirkung  einem 
  236.      Aus/Anschalten  des  Rechners.  Es  wird wirklich  jedes(!)  Byte  im 
  237.      Speicher gelöscht.  Damit kann man sich also reset-residente Routinen 
  238.      (Ramdisk-Treiber,  Viren  etc.) endgültig vom Leibe  schaffen.  Diese 
  239.      Methode  ist  schneller  als die Aus/An-Methode und  schon  auch  den 
  240.      ohnehin sehr labilen Netzschalter des Ataris.
  241.      Zur  Sicherheit  kann  diese Option  nur  nach  erneuter  Bestätigung 
  242.      wirklich ausgeführt werden.
  243.  
  244.      I) Reset-residente Routinen werden mit diesem Befehl gesucht. Genauer 
  245.      gesagt,   werden   Routinen   gesucht,   die  nach  dem   von   Atari 
  246.      undokumentierten  Verfahren (siehe ST-Profibuch S.  179)  installiert 
  247.      wurden. Darunter fällt zum Beispiel der Flexdisk-Treiber etc.
  248.      Achtung:  Darüber hinaus gibt es noch ein anderes Verfahren, Routinen 
  249.      resetfest  zu  installieren:  Man hängt den  Reset-Vektor  um!  Diese 
  250.      Methode wird hier jedoch nicht angezeigt!  Ansehen kann man sich  den 
  251.      Reset-Vektor aber mit G).
  252.  
  253.      J)   Hiermit  lä₧t  sich  die  Systemvariablenbeobachtung   an-   und 
  254.      ausschalten. Die Systemvariablenüberwachung ist eine recht aufwendige 
  255.      Operation.    Bei   jedem   Funktionsaufruf   werden   nämlich   alle 
  256.      Systemvariablen  mit ihren alten Werten verglichen.  Da  oft  relativ 
  257.      viele  Funktionsaufrufe/Zeiteinheit  auftreten,  ist man  mit  dieser 
  258.      Methode  zwar  immer "Up to date",  mu₧ aber  ziemliche  Einbu₧en  in 
  259.      Punkto  Rechengeschwindigkeit  hinnehmen.   Ich  empfehle  also,  die 
  260.      Systemvariablenüberwachung  nur dann zu aktivieren,  wenn Sie an  den 
  261.      Änderungen der Systemvariablen wirklich interessiert sind!
  262.  
  263.      Q) Das Tostrace-Menue wird hiermit verlassen!
  264.  
  265. Noch ein Tip von mir,  um von Programmen aus,  die gerade auf eine Eingabe 
  266. von der Tastatur warten,  in das Tostrace-Menue zu gelangen: Oft hilft es, 
  267. zuerst den Tostrace-Schirm einzublenden,  dann auf Ctrl/Alternate und dann 
  268. auf  eine  andere  Taste zu drücken.  Sobald das  laufende  Programm  sein 
  269. Zeichen erhalten hat, landet man dann i.A. im Tostrace-Menue.
  270.  
  271. 4) Probleme mit Tostrace
  272. ========================
  273.  
  274. Nach  meiner  Erfahrung  laufen so ziemlich alle  Programme  mit  Tostrace 
  275. zusammen.  Probleme  stellten sich allerdings bei  GFA-Basic  ein.  Dieser 
  276. Interpreter  setzt  (!)  nämlich einfach den Status  der  Tasten  Control, 
  277. Alternate,  l-Shift,  r-Shift  und Caps-Lock auf die ihm  genehmen  Werte, 
  278. selbst,  wenn diese den gerade anderen Zustand besitzen.  Dies führt dazu, 
  279. da₧ der Warte-Modus des Tostrace etwas durcheinandergerät. Einzig mögliche 
  280. Lösung dieses Problems scheint mir darin zu bestehen, einfach mal wild auf 
  281. diesen  Tasten  herumzudrücken,  bis  Tostrace  aus  seiner  verunglückten 
  282. Warteschleife herauskommt.
  283.  
  284. 5) Schlu₧wort
  285. =============
  286.  
  287. Ich  hoffe  mit diesem Programm eine  neue,  verbesserte  Möglichkeit  zum 
  288. Debuggen von eigenen und zum Analysieren von fremden Programmen geschaffen 
  289. zu   haben.   Natürlich  gibt  es  viele  Verbesserungsmöglichkeiten   des 
  290. Programms, die interessant wären. Da wäre zum Beispiel das Tracen von GEM-
  291. Routinen  (AES  ,  VDI),  sowie das Tracen von  Line-A-Aufrufen  oder  das 
  292. Mitprotokollieren auf dem Drucker etc.
  293.  
  294. Leider  habe  ich  im Augenblick (8/89 - 11/89)  wenig  Zeit,  um  weiter-
  295. zuprogrammieren.  Aber ich vermute, da₧ es ab Anfang '90 eine neue Version 
  296. von  Tostrace mit diesen Fähigkeiten bei mir für ca.  DM 75,- geben  wird. 
  297. Wer daran interessiert ist,  kann sich ja dann mal bei mir melden.  (Bitte 
  298. erst  anfragen!  Ob's  klappt  kann ich jetzt noch  nicht  mit  Sicherheit 
  299. sagen!)
  300.  
  301. Natürlich bin ich auch immer an Anregungen für neue  Tostrace-Fähigkeiten, 
  302. Meldungen von Bugs in Tostrace, u.ä. interessiert.
  303.  
  304. Viel Erfolg beim Tracen wünschen:
  305.  
  306.      Stefan Becker                           Ulrich Lemke
  307.      Trippstadter Str. 121 / 007             Wilh.-Raabe-Str. 26
  308.      6750 Kaiserslautern                     6750 Kaiserslautern
  309.  
  310. P.S:  Auch möchte ich mich noch für Tips und Anregungen bei D.  Sabiwalsky 
  311. und  E.  Dick bedanken.  Au₧erdem natürlich für die Idee zu  Tostrace  und 
  312. wichtige Hilfe beim Programmieren bei Urich Lemke.
  313. Bedanken möchte ich mich auch bei Thomas Tempelmann für seinen sehr  guten 
  314. Maschinensprachemonitor "Templmon",  dem ich jedem zur Zusammenarbeit  mit 
  315. Tostrace  und auch überhaupt empfehlen möchte.
  316. Au₧erdem für inspirierende Musik von:  Doors,  Free,  Jimi Hendrix,  Janis 
  317. Joplin, Rolling Stones, Van Morrison, Cream, Rory Gallagher, Traffic, Cold 
  318. Chisel, und so weiter... "Keep on rockin!"
  319.  
  320.