Was ist SysMon ?
----------------
  - SysMon ist ein System-Monitor, der smtliche ablaufenden
    System-Funktionen anzeigen kann.
  - SysMon ist auerdem ein Monitor, der smtliche System-Resourcen
    anzeigen kann.
  - Da SysMon komplett aus dem Speicher entfernt werden kann,ist er
    'quasiresident'.

Zielgruppe
----------
  - Programmierer und Software Entwickler,
    - die eigene Programme berprfen wollen;
    - die die Arbeitsweise anderer Programme feststellen wollen;
    - die wissen wollen, wie sich bestimmte Programme in das System
      einklinken, welche Aufrufe sie abfangen, modifizieren oder
      hinter welche Aufrufe sie sich einhngen;
    - die die Interprozess-Kommunikation am Austausch von AES-Messages
      beobachten wollen;
    - die die Hufigkeit einzelner Systemaufrufe interessiert, damit 
      sie ihre Programme verbessern knnen;
    - die Interesse an den internen Ablufen des Systems haben.
  - Hobby-Programmierer,
    - die anhand anderer Programme ihr Wissen und ihre Mglichkeiten
      erweitern wollen;
    - die einen tieferen Einblick oder berblick ber den Rechner
      gewinnen wollen.


A. Allgemeines
--------------
 Bedienung
 ---------
  - SysMon arbeitet mit einem Fenstersystem, da mit der Tastatur
    bedient wird.
  - Der Zustand des 'Tracers' ist mit einem Blick festzustellen.
  - Die wichtigsten Kommandos sind Control-Codes, die in allen
    Fenstern gelten.
  - Es gibt Funktionen, um sich schell zur gesuchten Information
    zu bewegen.

 Ein/Ausgabe
 -----------
  - SysMon luft unter allen Auflsungen des ST, auch OverScan und
    AutoSwitch-OverScan.
  - SysMon luft mit der MATRIX-SW- und Color-Karte und der 
    MAXON-MGE.
  - SysMon luft auf allen ST's, auch dem STE und dem TT.
  - SysMon luft unter allen bekannten TOS-Versionen, bei unbekannten
    Versionen pat es sich selber an (AutoPatch).
  - SysMon luft mit 68000-68030.
  - Die Ein/Ausgaben knnen auch auf RS232-, Centronics- oder Midi-Port
    umgeleitet werden.
  - Alle Trace-Ausgaben von SysMon knnen in einem Protokollfile
    gespeichert werden.
  - Die Profilingdaten knnen im Protokollfile gespeichert werden.
  - Alle Fenster von SysMon knnen im Protokollfile abgelegt werden.
  - Es gibt eine Notizblock-Funktion, damit man einfach Kommentare im
    Protokollfile unterbringen kann.

 Setups
 ------
  - Es gibt 10 verschiedene Setups, die gespeichert werden knnen.
  - Fr jedes Setup kann der Modus, die angewhlten Programme und
    Funktionen festgelegt werden.


B. Der Tracer
--------------
 1.Modi
 ------
  - Es gibt 4 Modi : RUN, STEP, WAIT und HALT. 
    - RUN   laufende Ausgaben
    - STEP  schrittweise Abarbeitung
    - WAIT  warten bis Breakpoint
    - HALT  Stop beim nchsten Systemaufruf
  - Fr jedes geladene Programm kann man den Modus festlegen.
  - Fr jeden Trap kann man bestimmen,ob er getraced wird.
  - Fr jede Funktion kann man den Modus festlegen.

 2.Tracer-Ausgaben
 -----------------
  - Es werden alle Eingangsparameter ausgegeben.
  - Auch alle Ausgangsparameter werden ausgegeben.
  - Bei allen Strukturen knnen die Elemente angezeigt werden.
  - Die meisten Parameter sind mit einer Kurzbezeichnung versehen.
  - Alle Konstanten werden im Klartext ausgegeben.
  - Dazugehrige Informationen knnen ausgegeben werden 
    - z.B. bei AES-Funktionen mit Objekten deren Typ und String;
    - z.B. bei Filefunktionen mit Filehandle den Filenamen;
    - z.B. bei Speicherfunktionen die Blockgre;
    - z.B. bei LineA-Funktionen die zugehrigen Variablen.
  - Fr jeden Aufruf kann 
    - die Rcksprungadresse,
    - der Name des aufrufenden Programms,
    - der Stapelzeiger,
    - der Prozessormodus,
    - die Funktionsnummer
    ausgegeben werden.
  - Verschachtelte Aufrufe werden durch Einrckungen kenntlich gemacht.
    (Fread hat z.B. Rwabs zur Folge...)
    
 3.Besonderheiten
 ----------------
  - SysMon kennt verschiedene ACC-Protokolle, von DEGAS, CLIPBRD ber
    GEMINI bis zum XACC-Protokoll.
  - SysMon kennt auch die Netzwerkprotokolle und die erweiterten
    Gemdos-Funktionen.
  - SysMon ist MultiTasking tauglich, es kommt auch mit System-Aufrufen
    aus Interrupts und mit verschiedenen MultiTasking-Systemen wie 
    z.B. dem RTX klar.
  - Das Profiling erlaubt es, die Hufigkeit von bestimmten Aufrufen
    zu zhlen.
  - Man kann ausgeben lassen, welche Aufrufe von anderen Programme
    abgefangen werden (FileSelectorBoxen...)
  - SysMon bemerkt, wenn andere Programme einen Aufruf modifizieren.
  - SysMon bemerkt, wenn sich andere Programme hinter einen Aufruf
    hngen.
    
 4.Trap berwachung
 ------------------
  - SysMon bemerkt Vernderungen von Traps und lt sich nicht aus den
    System-Vektoren entfernen.
  - SysMon kommt mit Programmen, die sich in die Traps hngen, zurecht.
  - Es entstehen auch keine Probleme, wenn die Programme sich wieder
    entfernen.
  - SysMon kann sich selber wieder aus den Traps aushngen.


C. Ausgabe von SystemResourcen
------------------------------

 1.Programme
 -----------
  - SysMon erkennt alle geladenen Programme, auch diejenigen, die vor
    SysMon gestartet wurden.
  - Bei residenten Programmen werden auch Datenbereiche erkannt.
  - SysMon kennt alle XBRA-Kennungen und die dazugehrigen Programme.
  - Bei vorher geladenen Programmen ist sogar der Name bekannt,
    wenn das Programm eine XBRA-Kennung hat oder ein ACC ist.
    
 2.Speicher
 ----------
  - Die Speicherliste ist eine vollstndige Liste aller Speicherblcke.
  - Die Speicherliste enthlt auch alle residenten Bereiche.
  - Jedem Speicherbereich wird eine Kennung zugeordnet. Erkannt werden:
    - Codebereiche,
    - VDI-Workstations,
    - AES-Blcke,
    - geladene GEM-Fonts,
    - Resourcen,
    - PDs,
    - Enviroments,
    - LineF-Handler.

 3.Variablen
 -----------
  - Alle Systemvariablen von $400 - $5A0.
  - Alle (auch die nicht vom System genutzten) Traps und Vektoren
    werden mit XBRA-Ketten angezeigt.
  - Alle LineA-Variablen.
  - Alle negativen LineA-Variablen.
  - Die Font-Header aller geladenen Fonts und Systemfonts.
  - Die Program-Header/Basepages/Cartridge-Header aller Programme.
  - Die Daten aller geffneten VDI-Workstations.
  - Der System-Header.
  - Alle Cookies; System-Cookies werden weiter aufgeschlsselt.

D. Beispiele fr die Anwendung
------------------------------
  - Stepweises Booten des Rechners.
  - Alle Aufrufe beim Wechseln der Auflsung in das Protokollfile
    schreiben.
  - Die Funktionsweise der neuen FileSelectorBoxen herausfinden.
  - Das Messageprotokoll zwischen GEMINI und CLIPBOARD.ACC beobachten.
  - Das 'MultiTasking' des MultiAcc's STUFFER.ACC herausfinden.
  - Feststellen, wieviel Speicher ein Programm wirklich belegt.
  - Welche Vektoren von einem Programm verndert werden.
  - Herausfinden, da der hufigste Aufruf whrend des Aufbaus des
    Desktops der 'vsl_udsty' Aufruf ist, wobei fr 2 gezeichnete
    'v_plines' 3 'vsl_udsty' mit denselben Parametern benutzt werden.
  - Herausfinden, da der Desktop versucht Speicher freizugeben, der 
    ihm nicht gehrt.
  - Herausfinden, da unter bestimmten Umstnden immer derselbe 
    VDI-Handle vergeben wird. (Und daraufhin VDI_FIX schreiben :-)
  - Herausfinden, da viele Patches und Programme immer noch nicht
    das XBRA-Protokoll untersttzen.
  - Pltzlich feststellen, da ein 'Unbekannter' einen 'Rwabs' 
    Aufruf absetzt, und einen Virus im Rechner entdecken...
  - Programmfehler und Abstrze im Protokollfile dokumentieren, um
    in Ruhe darber nachdenken zu knnen.
  - Den schlechten Programmierstil einiger Autoren dokumentieren
    und ihnen das Protokollfile ihrer 'Snden' zuschicken.

Karsten Isakovic, Mrz 90 in Berlin

