DE19729180C2 - Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen - Google Patents

Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen

Info

Publication number
DE19729180C2
DE19729180C2 DE19729180A DE19729180A DE19729180C2 DE 19729180 C2 DE19729180 C2 DE 19729180C2 DE 19729180 A DE19729180 A DE 19729180A DE 19729180 A DE19729180 A DE 19729180A DE 19729180 C2 DE19729180 C2 DE 19729180C2
Authority
DE
Germany
Prior art keywords
buffer
data
buffers
identified
state logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19729180A
Other languages
English (en)
Other versions
DE19729180A1 (de
Inventor
Robert D Gronlund
Brian A Willette
William M Zevin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Agilent Technologies Inc
Original Assignee
Agilent Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Agilent Technologies Inc filed Critical Agilent Technologies Inc
Publication of DE19729180A1 publication Critical patent/DE19729180A1/de
Application granted granted Critical
Publication of DE19729180C2 publication Critical patent/DE19729180C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/321Display for diagnostics, e.g. diagnostic result display, self-test user interface
    • G06F11/322Display of waveforms, e.g. of logic analysers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

Die vorliegende Erfindung bezieht sich auf die Verwendung von Logikanalysatorzustandserfassungsinformationen für eine Problemidentifikation und -Lösung und insbesondere auf Ver­ fahren zum Analysieren und Präsentieren von Logikanalysatorzustandserfassungsinformationen auf eine Art und Weise, die beim Korrelieren der Zustandserfassungs­ informationen mit Datenstrukturen auf höherer Ebene, die beim Erzeugen der Logikzustände verwendet werden, hilft.
Eine zeitweilige Datenzerstörung ist eine übliche Klasse von Problemen bei dem Entwurf und dem Debuggen von Elektronik/­ Software-Systemen. Oft ist die Datenzerstörung ein Symptom oder eine Manifestation einer Ursache mit tieferer Wurzel. Es kann sehr schwierig sein, solche Probleme zu orten, da die Wurzelursache eines speziellen Datenzerstörungssymptoms wesentlich früher in dem Betrieb des Systems als die Erfas­ sung der Datenzerstörung auftreten kann. Die Wurzel- oder Grundursachen solcher zeitweiliger Fehler beziehen sich oft auf Softwarefehler (wie z. B. ein unkorrektes Zeiger-Zurück­ setzen), auf elektronische Hardwareentwurfsfehler (wie z. B. Masseschleifen), auf unkorrekte Entwurfsannahmen bezüglich der Hardware oder Software oder auf Kombinationen dieser Probleme.
Gegenwärtige Ingenieursentwurfswerkzeuge zum Debuggen sol­ cher zeitweiliger Fehler umfassen folgende: Protokollanaly­ satoren, Logikanalysatoren, Mikroprozessoremulatoren, Bit­ fehlerratentester und Oszilloskope. Jedes dieser Werkzeuge liefert dem Ingenieur einen Einblick bezüglich des korrekten oder unkorrekten Betriebs eines Aspekts eines potentiell komplexen Systems. Protokollanalysatoren helfen beim Identifizieren der Eigenschaft von Daten, wie sie über ein Kommu­ nikationsmedium übertragen werden. Logikanalysatoren und Os­ zilloskope liefern detaillierte Informationen bezüglich der Parameter von digitalen und analogen Signalen der Elektronik in dem System. Mikroprozessoremulatoren erlauben eine de­ taillierte Analyse des Betriebs der Software innerhalb des Systems. Diese Werkzeuge werden oft in verschiedenen Kombi­ nationen von Entwurfsingenieuren verwendet, um mehrere As­ pekte des Systems zu analysieren und zu debuggen, wenn ein Fehler auftritt.
Im allgemeinen suchen Ingenieure danach, zeitweilige Fehler unter Verwendung eines "Teilen- und Erobern"-Lösungsansat­ zes zu identifizieren und zu lösen, um die Suche nach der Wurzelursache eines speziellen Fehlers einzuengen. Die Inge­ nieursanalyse sucht danach, mögliche Fehler zu beseitigen, indem die Eingaben, die einer speziellen Komponente/einem speziellen Aspekt des Systems geliefert werden, betrachtet werden, und indem verifiziert wird, daß dieselbe die erwar­ teten Ausgaben erzeugt. Wenn die Eingabe auf einer speziel­ len Ebene fehlerhaft ist, verschiebt der Ingenieur die Ana­ lyse weiter "nach oben" zu der Quelle dieser Eingabe hin, usw., bis die Wurzelursache geortet und repariert ist.
Ein Problem bei gegenwärtigen Analysewerkzeugen und Methoden für ihre Verwendung liegt in der Tatsache, daß, obwohl viele Werkzeuge verschiedene Testfunktionen integrieren, dieselben nicht die Fähigkeit besitzen, die Erfassung auf niederer Ebene (die Erfassung auf Hardwarezustandsebene) des Zustands von Daten mit der semantischen Bedeutung auf höherer Ebene der Zustände als Manipulationen von Datenstrukturen zu kor­ relieren. Eine solche Korrelation der Zustandserfassungsin­ formationen auf niedriger Ebene mit den Datenstrukturen auf höherer Ebene, welche manipuliert werden, wird dem Entwurfs/­ Test-Ingenieur selbst überlassen. Ohne eine solche Korrela­ tion zu der semantischen Manipulation von zugeordneten Da­ tenstrukturen können die einzelnen Zustandserfassungen jeder Analysiereinrichtung nicht synergistisch kombiniert werden, um zusätzliche Debugginginformationen zu liefern.
Bei einem Computerkommunikationsnetzsystem ist es beispiels­ weise üblich, daß eine intelligente Netzschnittstellenkarte (NIC; NIC = Network Interface Card), die in einem Prozessor­ komplex (Hostcomputer) verwendet wird, eine wesentliche Ver­ arbeitungsleistung auf der Netzschnittstellenkarte selbst umfaßt. Die NIC und der Hostcomputer tauschen dann Daten, Befehle und Zustände über einen gemeinsamen Zugriff auf ei­ nen gemeinsamen Bus zu Puffern, Pufferbeschreibern (Deskriptoren) und Zu­ standsbereichen, die in dem Hauptspeicher des Hostcomputers gespeichert sind, aus. Das Hostcomputersystem leitet die in­ telligente NIC an, um eine Schlange von Befehlen zu verar­ beiten, die in einer Serie von Pufferbeschreibern in dem Computerhauptspeicher enthalten sind. Die NIC ruft die Be­ schreiberblöcke von dem Hauptspeicher ab und verarbeitet die speziellen in denselben enthaltenen Befehle, einschließlich des Datenaustausches zwischen der NIC und den Puffern in dem Hauptspeicher (wie es durch die Befehle in dem Pufferbe­ schreiber angeleitet wird). Ein Ingenieur kann ein Netzpro­ tokollsystemproblem in einer solchen Umgebung durch die kom­ binierte Verwendung eines Netzprotokollanalysators (z. B. um Daten zu überwachen, die über das Netzmedium ausgetauscht werden) eines Mikroprozessoremulators (z. B. um den Betrieb von programmierten Befehlen auf einem Hauptprozessor oder auf dem NIC-Prozessor zu überwachen und/oder zu steuern, während Daten erzeugt und übertragen werden) und eines Lo­ gikanalysators (z. B. um Hardwarezustandsinformationen auf einem Bus zu überwachen, der die NIC mit dem Hauptprozessor verbindet) debuggen. Wenn der spezielle Protokollfehler zuerst erfaßt wird (z. B. durch eine getriggerte Situation in dem Protokollanalysator oder der Testsoftware), können der Logikanalysator und der Mikroprozessoremulator ge­ triggert werden, um ihre jeweiligen Daten für eine Zeitdauer zu erfassen, die dem erfaßten Protokollfehler vorausgeht. Der Ingenieur muß dann manuell versuchen, die Netzdaten, die auf dem Netzmedium ausgetauscht werden, wie sie in dem Protokollanalysator erfaßt werden, mit dem Softwarezustand zu korrelieren, der in dem Mikroprozessoremulator erfaßt wurde, und ferner mit dem Netzschnittstellenkartenzustand korrelieren, der in dem Logikanalysator erfaßt wurde. Obwohl die verschiedenen Analysatoren und Emulatoren korreliert oder bezüglich der Zeit synchronisiert sein können, können die erfaßten Daten nicht ohne weiteres mit den Datenstruktu­ ren auf höherer Ebene (und mit ihrem Inhalt) korreliert wer­ den, die von dem Hauptprozessor oder von der intelligenten Netzschnittstellenkarte verwendet werden. Statt dessen steht der Ingenieur einer schwierigen zeitaufwendigen Aufgabe ge­ genüber, die erfaßten Zustandsinformationen von allen Analy­ satoren manuell zu interpretieren, um die erwünschte Korre­ lation herzustellen.
Die Schnittstelle zwischen solchen intelligenten I/O- Schnittstellengeräten (I/O = Input/Output) und ihren zuge­ ordneten Hostcomputern ist daher ein wesentlicher Aspekt bei der Analyse, die erforderlich ist, um die Wurzelursache ei­ nes Datenzerstörungsproblems zu isolieren. Eine übliche Ur­ sache für Datenzerstörungsfehler entsteht aus dieser I/O- Architektur, wenn aufgrund typischerweise von Software- oder Hardware-Zeitsteuerungsfehlern ein Computer damit beginnt, einen Puffer oder einen Beschreiberblock zu überschreiben, bevor die früheren Handlungen, die diesen Beschreiber oder Puffer verwenden, vollendet worden sind. In anderen Situa­ tionen werden die Beschreiber oder Puffer einfach mit Infor­ mationen über ihrer definierten Kapazität oder Größe hinaus überschrieben, derart, daß andere Beschreiber oder Puffer fehlerhaft verändert werden, während sie noch in Verwendung sind.
Moderne Test- und Analysegeräte, wie z. B. Logikanalysato­ ren, weisen größere Speicher für eine tiefere Speicherung von erfaßten Informationen auf. Solche tiefen Erfassungs­ speicher sind im allgemeinen hilfreich, um Probleme zu orten und zu identifizieren, und zwar deswegen, da die erhöhte Tiefe die Wahrscheinlichkeit erhöht, daß Daten, die für die Lösung des Problems relevant sind, in dem erfaßten Speicher enthalten sein werden. Das größere Volumen von erfaßten Da­ ten multipliziert jedoch auch das Problem des Ingenieurs, erfaßte Daten mit den manipulierten Datenstrukturen auf hö­ herer Ebene zu korrelieren. Ein fortgesetztes Wachstum der Erfassungsspeichertiefe wird die Probleme des Ingenieurs beim manuellen Korrelieren der erfaßten Zustandsdaten mit den Aktivitäten auf höherer Ebene, die Datenstrukturmanipu­ lationen umfassen, noch verschärfen.
Aus der obigen Diskussion ist es klar, daß ein Bedarf be­ steht, die Automatisierung und die Unterstützung für die In­ genieursaufgabe des Korrelierens von Zustandserfassungsdaten auf niedriger Ebene mit den entsprechenden Aktivitäten auf höherer Ebene an der Wurzel des gesuchten Problems zu korre­ lieren.
In Elektronik 7/1996, Seiten 92-95 wird die Fehlersuche bei Adressierungsproblemen beschrieben, für die ein integrierter Adressdecoder verwendet wird. Hierbei handelt es sich um eine Software-implementierte Technik, die die oben beschrie­ benen Probleme mit sich bringt, nämlich daß durch das Ablau­ fen dieser Software tatsächliche Hardware-Probleme ver­ schleiert oder verändert werden.
In IBM Technical Disclosure Bulletin, März 1995, Seiten 67- 69 wird keine besondere Art der Fehlererfassung erwähnt, sondern ausschließlich die Darstellung der Ergebnisse.
Die US-A-5,408,650 zeigt die graphische Darstellung von zu­ geordneten Speichersegmenten, wobei zur Erfassung ein "De­ bugger" verwendet wird, also eine software-implementierte Ausführung.
Die DE 32 18 277 A1 zeigt ein Mehrprozessorsystem mit einer Mehrzahl von Logikanalysatoren, die Unterrechnern zugeordnet sind. Die Logikanalysatoren dienen dazu, zur Auffindung von Fehlern einen von und zu den Unterrechnern fließenden Daten­ strom aufzuzeichnen und zu speichern.
Die Aufgabe der vorliegenden Erfindung besteht darin, Ver­ fahren zu schaffen, die eine vergrößerte Automation und Unterstützung schaffen, um Zustandsinformationsinformationen auf niedriger Ebene mit entsprechenden Aktivitäten auf höherer Ebene zu korrelieren.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 ge­ löst.
Die vorliegende Erfindung löst die oben genannten und weite­ re Probleme durch Bereitstellen automatisierter Verfahren zum Unterstützen des Test/Ent­ wurfs-Ingenieurs beim Korrelieren von Zustandserfassungsin­ formationen auf niedriger Ebene mit Datenstrukturen auf hö­ herer Ebene, die von dem zu testenden System manipuliert werden. Insbesondere können die Verfahren der vorliegenden Erfindung auf Zustandserfassungsinformationen arbeiten, die von einem Logikanalysator gesammelt werden, der derart ver­ bunden ist, um die Informationen zu überwachen, die zwischen intelligenten I/O-Schnittstellengeräten und einem beigefüg­ ten steuernden Hauptprozessor ausgetauscht werden. Bezüglich seiner Verwendung in dieser Anmeldung bezieht sich der Ausdruck "Hauptprozessor" auf einen Computer, der über einen I/O-Schnittstellenbus an einem intelligenten I/O-Schnitt­ stellengerät angebracht ist. In einer solchen Konfiguration teilen der Hauptprozessor und die intelligente I/O-Schnitt­ stellenkarte den Zugriff auf ein Speicherteilsystem, das an dem Hauptprozessor und der I/O-Schnittstellenkarte ange­ bracht ist (über den I/O-Schnittstellenbus). Diese I/O-Ar­ chitektur ist bei Allzweckcomputersystemen, wie z. B. Per­ sonalcomputern und Arbeitsstationen, üblich. Solche I/O-Ar­ chitekturen sind ebenfalls in vielen Spezialgeräten, wie z. B. Test- und Analyseausrüstungen, üblich, bei denen ein ein­ gebetteter Hauptprozessor den Betrieb des Geräts steuert, während angebrachte intelligente I/O-Schnittstellengeräte spezifische Operationen für die Spezialausrüstung durchfüh­ ren. Die Verfahren der vorliegenden Erfindung sind daher so­ wohl auf Allzweckcomputersysteme als auch auf Spezialtest- oder Kommunikationsgeräte anwendbar, die in sich eingebettet die oben beschriebene I/O-Architektur aufweisen.
Im allgemeinen kann die Darstellung des speziellen Datenaus­ tauschprotokolls, das verwendet wird, beobachtet werden, in­ dem die Hauptspeicherzugriffe von dem Hauptprozessor und der zugeordneten I/O-Schnittstelle überwacht werden. In Pakete geformte Protokolle sind beispielhaft für Datenaustauschpro­ tokolle, auf die die Verfahren und Vorrichtungen der vorlie­ genden Erfindung auf vorteilhafte Weise angewendet werden können. Insbesondere werden die Einheiten von Daten, die in solchen Protokollen ausgetauscht werden, als Pakete, Rahmen oder einfach als Protokolldateneinheiten bezeichnet. Pakete in solchen Protokollen sind üblicherweise in einem gemeinsam verwendeten Speicher positioniert, der von sowohl dem Host­ computer als auch von einer zugeordneten intelligenten I/O- Schnittstelle zugegriffen werden kann. Die Pakete sind übli­ cherweise durch zusätzliche Datenstrukturen in dem Speicher getrennt, die der Verwaltung des gemeinsam verwendeten Spei­ chers zugeordnet sind. Die zusätzlichen Abschnitte der Da­ tenstrukturen, die den Paketen in dem Speicher zugeordnet sind, werden oft als Wächter bezeichnet. Bekannte Speicherverwaltungstechniken (wie z. B. "Malloc" und verwandte UNIX-Systemfunktionen) verwenden solche Wächterstrukturen, um die Verwendung der gemeinsam verwendeten Speicherstruktu­ ren zu verwalten. Zusätzlich sind die Verfahren der vorlie­ genden Erfindung ebenfalls dazu in der Lage, Puffer, die in "zusammenhängenden" oder "herunter-verriegelten" (üblicher­ weise statisch vor-zugeordnete) Puffermengen positioniert sind, zu analysieren.
Die Speicherzugriffe, die bei den Zustandserfassungsinforma­ tionen erfaßt werden, werden von den Verfahren und Vorrich­ tungen der vorliegenden Erfindung analysiert, um die Manipu­ lation von Puffern in dem Austausch von Daten zwischen dem Hauptprozessor (Hostcomputer) und zugeordneten I/O-Geräten zu rekonstruieren. Die Verfahren der vorliegenden Erfindung analysieren daher die erfaßten Zustandsinformationen, um die erfaßten Zustandsinformationen auf eine Art und Weise zu präsentieren, die mit den darunterliegenden Datenstrukturma­ nipulationen zwischen dem Hostcomputer und der I/O-Schnitt­ stelle korreliert sind, und die ebenfalls mit dem darunter­ liegenden Datenaustauschprotokoll, das debuggt wird, korre­ liert sind.
Insbesondere analysieren die Verfahren der vorliegenden Er­ findung auf automatische Art und Weise die erfaßten Zu­ standsinformationen, um Puffer und Pufferbeschreiber, die zwischen dem Hostcomputer und der zugeordneten I/O-Schnitt­ stellenkarte ausgetauscht werden, heuristisch zu orten und zu identifizieren. Konfigurationsparameter der Verfahren und Vorrichtungen der vorliegenden Erfindung definieren die Re­ geln, die verwendet werden, um Puffer und Pufferbeschreiber in den erfaßten Zustandsinformationen heuristisch zu iden­ tifizieren. Die Konfigurationsparameter erlauben es, daß die Verfahren und Vorrichtungen der vorliegenden Erfindung ohne weiteres an ein spezielles Datenaustauschprotokoll oder an eine spezielle Datenstruktur angepaßt wird.
Das Identifizieren und Orten von Puffern und Pufferbeschreibern innerhalb der erfaßten Zustandsinformationen hilft dem Ingenieur beim Korrelieren der erfaßten Zustandsdaten in ei­ nem Logikanalysator mit den zerstörten Datenaustauschvorgän­ gen, die dem zu lösenden Problem zugeordnet sind. Weitere Verfahren der vorliegenden Erfindung korrelieren spezielle Pufferbeschreiber mit dem speziellen Puffer, auf die sich derselbe bezieht. Noch weitere Verfahren der vorliegenden Erfindung korrelieren die identifizierten Puffer und Puffer­ beschreiber mit dem speziellen Datenaustauschprotokoll, das für die Anwendung verwendet wird. Diese Korrelation hilft ferner dem Ingenieur beim Einengen des Suchgebiets für die Wurzelursache des Problems, das analysiert wird.
Verfahren der vorliegenden Erfindung zeigen die Zustandser­ fassungsinformationen auf einem Computeranzeigebildschirm in einem Graphik- und in einem Textstil an, welche die Korrela­ tion zwischen den Zustandserfassungsinformationen und den Datenstrukturen auf höherer Ebene und Protokollen des Haupt­ prozessors verdeutlichen. Insbesondere werden Puffer identi­ fiziert, indem die Mehrzahl von erfaßten Zuständen, die Speicherverweise auf einen identifizierten Puffer darstel­ len, visuell verbunden werden. Die Farbe des Puffers auf dem Anzeigebildschirm zeigt an, ob der Pufferzugriff für eine Lesen- oder für eine Schreiben-Operation ist. Jeder Puffer­ beschreiber, der von der Analyseheuristik identifiziert wird, ist mit dem zugeordneten Puffer mittels eines graphi­ schen Vektors graphisch verbunden. Ein Benutzer der Verfah­ ren der vorliegenden Erfindung kann graphisch einen speziell identifizierten Puffer oder Pufferbeschreiber auswählen und den Dateninhalt desselben in einem getrennten Textfenster auf dem Anzeigebildschirm betrachten. Der Inhalt des ausge­ wählten Puffers oder Beschreibers kann in einem rohen Hexa­ dezimalmodus oder in einem Textübersetzungsmodus, wie z. B. ASCII oder EBCDIC, betrachtet werden.
Die Verfahren der vorliegenden Erfindung sind auf einem All­ zweckcomputer ausführbar. Ein solcher Computer kann entweder in einem Logikanalysator oder außerhalb eines Logikanalysators vorhanden sein, der in einem Nachverarbeitungsmodus ar­ beitet, um Puffer- und Protokoll-Informationen in den er­ faßten Zuständen, die von einem Logikanalysator wiedergewon­ nen werden, zu analysieren und anzuzeigen. Alternativ können Teile der vorliegenden Erfindung in einer speziell entworfe­ nen Hardwarehilfselektronikschaltung eingebettet sein, um das Verhalten der Analyse und die Erkennungsverfahren der vorliegenden Erfindung zu verbessern. Solche anwendungsspe­ zifischen Hilfsschaltungen können in den Benutzerschnitt­ stellensteuerungsschaltungen und in der Software eines Lo­ gikanalysators integriert werden.
Zusätzlich wird ein Fachmann Merkmale der vorliegenden Er­ findung erkennen, die dem Benutzer beim Bestimmen detail­ lierter Aspekte des Systemverhaltens helfen, wenn sie ver­ wendet werden, um lokalisierte Situationen einer Operation zu inspizieren. Die Visualisierungsmerkmale, die von den Verfahren und Vorrichtungen während der vorliegenden Erfin­ dung geschaffen werden, machen viele detaillierten Merkmale des Verhaltens offensichtlich, die die Buseignerschaft, den Stoß- bzw. "Burst"-Wirkungsgrad und Datenübertragungsraten umfassen, die jedoch nicht auf die genannten begrenzt sind.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeich­ nungen detaillierter erörtert. Es zeigen:
Fig. 1 ein Blockdiagramm, das einen Logikanalysator zeigt, der in Verbindung mit den Verfahren der vorliegenden Erfindung betreibbar ist und mit ei­ nem typischen Computersystem, das getestet wird, verbunden ist;
Fig. 2 ein Blockdiagramm, das einen selbständigen Logik­ analysator zeigt, der einen eingebetteten Prozes­ sor und eine Anzeige aufweist, auf denen die Ver­ fahren der vorliegenden Erfindung ausführbar sind;
Fig. 3 ein Blockdiagramm, das einen Logikanalysator zeigt, der allein verwendet wird, um Zustandslo­ gikdaten zu erfassen, und der mit einem Allzweck­ computer verbunden ist, auf dem die Verfahren der vorliegenden Erfindung ausführbar sind, um die Er­ fassungszustandslogikdaten nachzuverarbeiten;
Fig. 4 eine beispielhafte Bildschirmanzeige, die durch ein Ausführen der Verfahren der vorliegenden Er­ findung erzeugt wird, um Puffer und zugeordnete Pufferbeschreiber darzustellen, die durch Ausfüh­ rung der Verfahren der vorliegenden Erfindung auf erfaßte Zustandslogikdaten geortet und identifi­ ziert wurden;
Fig. 5 einen beispielhaften Anzeigebildschirm, der durch ein Ausführen der Verfahren der vorliegenden Er­ findung erzeugt wird, und zwar als Reaktion auf eine Benutzeranforderung, um erfaßte Zustandslo­ gikdaten in Textform sowohl als Rohdaten als auch als Daten anzuzeigen, die gemäß einer Protokoll­ spezifikation interpretiert sind;
Fig. 6 bis 13 Flußdiagramme, die die Ausführung der Verfahren der vorliegenden Erfindung beschreiben, um erfaßte Zustandslogikdaten zu analysieren, und um Nutzin­ formationen bezüglich von Puffern anzuzeigen, die in denselben geortet und identifiziert wurden; und
Fig. 14 bis 19 Blockdiagramme, die verschiedene Bedingungen zei­ gen, die von Verfahren der vorliegenden Erfindung verwendet und erkannt werden, um Puffer innerhalb erfaßter Zustandslogikdaten zu orten, und um mög­ liche schädliche Verweise auf dieselben zu erken­ nen.
Logikanalysator/Computer-Umgebung
Fig. 1 ist ein Blockdiagramm eines typischen Computersystems 100, mit dem ein Logikanalysator 1 über Sonden 2 verbunden ist, um beim Orten der Wurzelursache eines Datenzerstörungs­ problems zu helfen. Das System 100 umfaßt eine CPU 102, die über eine Host/PCI/Cache/Brücke-Einrichtung 104 mit dem Hauptspeicher 106 verbunden ist. Die CPU 102 ruft program­ mierte Befehle von dem Hauptspeicher 106 ab und manipuliert Daten in dem Hauptspeicher 106 über die Host/PCI/Brücke- Einrichtung 104. Auf Peripherie-I/O-Geräte kann mittels der CPU 102 über die Host/PCI/Cache/Brücke-Einrichtung 104 auf den CPI-Bus 150 zugegriffen werden. Ein SCSI-Adapter 108, ein LAN-Adapter 110, eine Brücke 112 und ein Graphikadapter 114 sind typische Geräte, die über den PCI-Bus 150 an der CPU 102 angebracht sind. Der SCSI-Adapter 108 erlaubt eine Verbindung der CPU 102 über den PCI-Bus 150 mit einer Mehr­ zahl von Speichergeräten 116 (wie z. B. einer Platte, einem Band und einem CDROM) über den SCSI-Bus 152. Der LAN-Adapter 110 paßt Signale in einem LAN 154 zur Verwendung mit der CPU 102 über den PCI-Bus 150 an. Die Brücke 112 erweitert den Hochgeschwindigkeits-PCI-Bus 150 mit anderen preisgünsti­ geren Bussen mit niedriger Leistung zur Verknüpfung mit zu­ sätzlichen (typischerweise älteren) I/O-Peripheriegeräten. Der Graphikadapter 114 verbindet die CPU 102 über den PCI- Bus 150 mit Hochleistungsgraphikanzeigebildschirmen.
Wie es oben angemerkt wurde, kann das System 100 ein All­ zweckcomputersystem oder ein Spezialelektronikgerät sein, das die I/O-Architektur, welche oben beschrieben wurde, in sich eingebettet aufweist. Spezialnetz-Kommunikations-Geräte und eine Testausrüstung betten beispielsweise oft eine I/O- Architektur ein, die zu der oben beschriebenen ähnlich ist, obwohl die Benutzerschnittstelle für solche Geräte ihre Ver­ wendung auf spezielle Kommunikations- oder Testfunktionen begrenzt. Auf ähnliche Weise betten viele elektronischen Testgeräte, wie z. B. Oszilloskope, In-Schaltung(in-circuit)-Emulatoren und sogar Logikanalysatoren selbst, eine solche leistungsfähige Allzweck-I/O-Architektur ein, sie begrenzen jedoch den Benutzer auf bestimmte spezifische Anwendungen und nicht auf Allzweckcomputeranwendungen. Daher kann, wie es hierin verwendet wird, ein "Hostcomputer" oder "Hauptprozessor" und eine "intelligente I/O-Schnittstelle" in einem Allzweckcom­ putersystem oder in einem beliebigen Spezialelektronikgerät mit einer ähnlichen I/O-Architektur liegen.
Um die Verarbeitungslast auf der CPU 102, die auf eine Ver­ arbeitung auf niederer Ebene von I/O-Funktionen für Periphe­ riegeräte bezogen ist, zu reduzieren, umfassen typische Adapter 108 bis 114 wesentliche Verarbeitungsfähigkeiten, um I/O-Anforderungen für die CPU 102 durchzuführen. Eine allge­ meine Schnittstellenstruktur für eine solche I/O-Schnitt­ stellenkarte ist eine gemeinsame Speicherstruktur ("Shared- Memory"-Struktur), derart, daß sowohl die CPU 102 als auch die intelligenten I/O-Adapter (108 bis 114) auf Informatio­ nen zugreifen können, die in dem Hauptspeicher 106 gespei­ chert sind. Die CPU 102 baut einfach eine Schlange von Be­ fehl/Puffer-Beschreiberblöcken in ihrem Hauptspeicher 106, informiert einen geeigneten I/O-Adapter (108 bis 114) bezüg­ lich der Startadresse der Schlange von Beschreibern, und wartet dann einfach auf ein Signal der Vollendung der Ver­ arbeitung der schlangenmäßig angeordneten Beschreiber durch den ausgewählten intelligenten I/O-Adapter. Wenn ein Daten­ puffer als Teil der angeforderten I/O-Verarbeitung für einen speziellen Beschreiber ausgetauscht werden soll, dann zeigt der Beschreiber auf eine Position in dem Hauptspeicher 106, wo der Puffer für den angeforderten Datenaustausch gefunden werden kann.
Der intelligente I/O-Adapter (108 bis 114) gewinnt einen nächsten Beschreiber von dem Hauptspeicher 106 zurück und führt die angeforderte I/O-Funktionsverarbeitung durch. Wenn die I/O-Funktionsanforderung, die in dem Beschreiber gefun­ den wurde, die Verwendung eines Datenpuffers zum Austausch von Daten erfordert, dann wird der angeforderte Austausch unter Verwendung des identifizierten Puffers durchgeführt.
Diese Beschreiber werden oft als Befehlsbeschreiber bezeich­ net, da sie die durchzuführende I/O-Anforderung beschreiben. Bezüglich ihrer Verwendung in dieser Anmeldung werden die Beschreiber oft als Pufferbeschreiber (Deskriptoren) bezeichnet, da sie auf die Position eines Puffers in dem Hauptspeicher zeigen, der verwendet wird, um die angeforderte I/O-Funktion durchzufüh­ ren.
Der Logikanalysator 1 ist mit dem PCI-Bus 150 über die Son­ den 2 verbunden, um Zustandslogikinformationen zu überwachen und zu erfassen, die zwischen der CPU 102, dem Hauptspeicher 106 und den intelligenten I/O-Adaptern (108 bis 114) ausge­ tauscht werden. Die Verfahren der vorliegenden Erfindung sind auf dem Logikanalysator 1 ausführbar, um dem Ingenieur beim Analysieren des Austausches von Informationen über den PCI-Bus 150 zu helfen, die sich auf Puffer und Pufferbe­ schreiber beziehen. Wie es oben erörtert wurde, kann eine solche Analyse bei dem Austausch von Informationen zwischen der CPU 102 und einer oder mehreren intelligenten I/O-Adap­ tern 108 bis 114, wie sie in den Zustandslogikdaten von dem Logikanalysator 1 erfaßt werden, nützlich sein, um die Wur­ zelursache eines Datenzerstörungsfehlers in einem solchen Computersystem zu isolieren.
Ein Fachmann wird es ohne weiteres erkennen, daß eine solche Analyse, wie sie von dem Logikanalysator 1 durchgeführt wird, in Verbindung mit den Verfahren der vorliegenden Er­ findung auf gleiche Weise auf eine beliebige Busstruktur an­ wendbar ist. Der PCI-Bus 150 ist nur beispielhaft für einen üblichen Busstandard, der gegenwärtig allgemein verwendet wird. Wie es oben angemerkt wurde, wird ein Fachmann genauso ohne weiteres erkennen, daß die Verfahren der vorliegenden Erfindung, die auf dem Logikanalysator 1 ausführbar sind, verwendet werden können, um ein beliebiges elektronisches Gerät, das eine ähnliche I/O-Architektur zu der, die in Fig. 1 gezeigt ist, verwendet, zu debuggen. Das Allzweckcomputer­ system 100 ist für ein übliches Gerät beispielhaft, welches eine solche I/O-Architektur verwendet, wobei intelligente I/O-Schnittstellenkarten (z. B. 108 bis 114) auf Informatio­ nen, die von einem Steuerprozessor (z. B. der CPU 102) er­ zeugt werden, in einem gemeinsam verwendeten Speicher (z. B. dem Hauptspeicher 106) zugreifen. Ein Fachmann wird es ohne weiteres erkennen, daß das Computersystem 100 von Fig. 1 viele äquivalente Computerumgebungen darstellen kann, die einen Computer mit einer Platine umfassen, wobei alle Kom­ ponenten auf derselben stark integriert und in einer Spe­ zialzweckcomputerkomponente (z. B. einer Netzbrücke, einem Schalter oder einem Routergerät) eingebettet sind.
Die Verfahren der vorliegenden Erfindung (die nachfolgend detailliert erörtert sind) sind auf einem Computer in Ver­ bindung mit einem Logikanalysator ausführbar. Moderne Logik­ analysatoren umfassen viele (wenn nicht alle) Aspekte eines Allzweckcomputers, wie es in Fig. 2 gezeigt ist. Die Verfah­ ren der vorliegenden Erfindung sind daher direkt innerhalb eines Logikanalysators ausführbar, der solche Allzweckre­ chen- und Anzeige-Fähigkeiten hat. Der Logikanalysator 1, wie er in Fig. 2 gezeigt ist, empfängt von Sonden 2 Zu­ standslogikdaten, welche verarbeitet und wie erforderlich durch ein Zustandserfassungselement 208 in einem Zustands­ speicherelement 210 gespeichert werden. Der Prozessor 200 steuert das Zustandserfassungselement 208, um die Zustands­ erfassungsparameter zu konfigurieren, und um die resultie­ renden Zustandslogikdaten von dem Zustandsspeicher 210 wie­ derzugewinnen. Wie bei den meisten Allzweckcomputersystemen ist der Prozessor 200 mit der Benutzer-Eingabe-I/O 202 (z. B. Tastaturen und Zeigegeräte) verbunden, um Benutzerein­ gaben und Parameter zu empfangen. Der Prozessor 200 ist ebenfalls mit der Anzeige 204 verbunden, um dem Benutzer In­ formationen des Logikanalysators zu präsentieren. Ein RAM/­ ROM-Speicher 206 wird von dem Prozessor 200 verwendet, um Variablen zu manipulieren, und um Steuerprogrammbefehle zu speichern. Die Verfahren der vorliegenden Erfindung können daher in den Standardsteuerprogrammen in einem Logikanaly­ sator integriert sein, dieselben können von dem RAM/ROM- Speicher 206 gespeichert und wiedergewonnen werden, dieselben können auf dem Prozessor 200 ausgeführt werden, diesel­ ben können ihre Resultate auf der Anzeige 204 anzeigen, und dieselben können eine Benutzereingabe von der Benutzer-Ein­ gabe-I/O 202 empfangen.
Alternativ können die Verfahren der vorliegenden Erfindung auf einem Allzweckcomputersystem 200 von Fig. 3 ausgeführt werden, das mit dem Logikanalysator 1 über einen Bus 350 verbunden ist, um einfach die erfaßten Zustandslogikdaten von demselben wiederzugewinnen. Wie es in Fig. 3 gezeigt ist, empfängt der Logikanalysator 1 Zustandslogikdaten von den Sonden 2 unter der Steuerung der Zustandserfassungslogik 312. Die erfaßten Zustände werden in dem Zustandsspeicher 314 gespeichert. Ein Steuerelement 316 (typischerweise ein Computer) steuert den Betrieb des Logikanalysators 1 und kann mit einem zugeordneten Hostcomputersystem 300 durch ei­ ne Hostschnittstelle 318 über den Bus 350 kommunizieren. Der Bus 350 kann beispielsweise ein SCSI-Bus, ein LAN, ein Bus IEEE 488, usw. sein, wie es für den speziellen Logikanalysa­ tor 1 und das Computersystem 300 geeignet ist. Das Computer­ system 300 umfaßt die CPU 302, die mit dem RAM/ROM-Speicher 306 verbunden ist, die Benutzer-Eingabe-I/O 308 und die An­ zeige 310. Das Peripherie-I/O-Element 304 verbindet die CPU 302 mit dem Bus 350 zum Austausch von Daten mit dem Logik­ analysator 1. Insbesondere gewinnt das Computersystem 300 erfaßte Zustandslogikdaten von dem extra vorhandenen Logik­ analysator 1 über den Bus 350 wieder und verarbeitet dann die wiedergewonnenen Daten mittels der Verfahren der vorlie­ genden Erfindung nach, um dem Ingenieur beim Positionieren der Wurzelursache eines Datenzerstörungsfehlers in dem zu testenden System (nicht gezeigt) zu helfen. Die Verfahren dar vorliegenden Erfindung sind daher in einem für sich an­ geordneten Allzweckcomputersystem ausführbar, das mit einem für sich angeordneten Logikanalysator verbunden ist. Ein Fachmann wird ebenfalls erkennen, daß das Computersystem 300 erfaßte Zustandslogikdaten über den Bus 350 oder über ir­ gendeine andere ähnliche Übertragungsvorrichtung wiederge­ winnen kann. Die erfaßten Daten können beispielsweise auf eine Floppy-Diskette in dem Logikanalysator 1 geschrieben und physisch zu dem Computersystem 300 übertragen werden.
Ein Fachmann wird erkennen, daß die Verfahren der vorliegen­ den Erfindung in Allzwecklogikanalysatoren sowie in Spezial­ zweckprotokoll- oder Busanalysatorgeräten oder Softwaremodu­ len ausgeführt werden können.
Zustandsanalyseverfahren der vorliegenden Erfindung
Die Fig. 6 bis 8 sind Flußdiagramme, die den Betrieb auf ho­ her Ebene der Verfahren der vorliegenden Erfindung zeigen, um erfaßte Zustandslogikdaten zu analysieren und anzuzeigen. Insbesondere führen die Elemente 600 bis 612 von Fig. 6 eine Grundanalyse von erfaßten Zustandslogikdaten durch, um Speicherzugriffsbereiche in den erfaßten Zustands­ logikdaten zu orten und zu identifizieren, und um die Berei­ che als Puffer oder Pufferbeschreiber zu klassifizieren. Die Elemente 614 und 616 von Fig. 6 führen eine rudimentäre An­ zeige der Analyseergebnisse auf dem Anzeigebildschirm des Benutzercomputers durch. Die Elemente 618 bis 646 von Fig. 7 und 8 führen dann eine zusätzliche Analyse der identifizier­ ten Puffer und Pufferbeschreiber im Zusammenhang der spe­ ziellen Anwendung der Verfahren der vorliegenden Erfindung auf spezielle Protokolle und Umgebungen durch, und dieselben zeigen die Ergebnisse dieser zusätzlichen Analyse an. Die zusätzliche Analyse kann ebenfalls durch eine Eingabe von dem Benutzer getrieben werden, um die Verfahren der vorlie­ genden Erfindung anzuleiten, um spezielle Analyseschritte durchzuführen, und um die erfaßten Zustandsdaten auf spe­ zielle nützliche Arten und Weisen anzuzeigen. Die speziellen Analyse- und Anzeigeschritte der Verfahren der vorliegenden Erfindung, die bezugnehmend auf die Fig. 7 und 8 erörtert werden, sind beispielhaft für eine Analyse und Anzeige, die in einer speziellen Anwendung der Verfahren der vorliegenden Erfindung nützlich ist. Weitere ähnliche Analyse- und An­ zeigeschritte für weitere spezielle Anwendungen und Datenaustauschprotokolle werden für Fachleute im Hinblick auf die Lehren und Beispiele, die hierin präsentiert sind, offen­ sichtlich sein.
Das Element 600 von Fig. 6 ist zuerst betreibbar, um Zu­ standslogikdaten zu erfassen. Der Betrieb des Elements 600 hängt von der Struktur des Logikanalysators und des Berech­ nungssystems ab, auf dem die Verfahren ausführbar sind. Wie es oben in Fig. 2 gezeigt ist, bei der die Verfahren der vorliegenden Erfindung innerhalb des Logikanalysators aus­ führbar sind, ist das Element 600 innerhalb des Prozessors 200 betreibbar, um die erfaßten Zustandslogikdaten wieder­ zugewinnen, wie sie in dem Zustandsspeicher 210 gespeichert sind. Wenn, wie es in Fig. 3 gezeigt ist, die Verfahren auf einem für sich angeordneten Allzweckcomputer ausführbar sind, dann ist das Element 600 betreibbar, um die erfaßten Zustandsdaten von dem verbundenen Logikanalysator (z. B. über den Bus 350 von Fig. 3) oder von einer Datei, die zu dem System (300 von Fig. 3) mittels einer anderen Einrich­ tung übertragen wurden, wiederzugewinnen.
Das Element 602 ist nun betreibbar, um die Analyseparameter des Benutzers zu bestimmen. Eine Anzahl der Parameter, die die Analyse und Anzeige der Zustandslogikdaten steuern, sind durch den Benutzer gemäß der speziellen Anwendung der Ver­ fahren der vorliegenden Erfindung konfigurierbar. Der Benut­ zer muß Konfigurationsinformationen liefern, die den Typ des erfaßten Busses definieren. Der Benutzer kann beispielsweise übliche Standardbusse, wie z. B. PCI oder VME, auswählen, oder derselbe kann eine anwendungsspezifische Buskonfigura­ tion definieren, die eine vollständige Definition der Adres­ se und des Datenbuslayouts in den erfaßten Zustandlogikdaten liefert. Ein Fachmann wird ohne weiteres erkennen, daß die Verfahren der vorliegenden Erfindung Konfigurationsinforma­ tionen innerhalb des Logikanalysators lesen oder auf andere Art und Weise analysieren, um die Buskonfiguration zu be­ stimmen. Der Endian-Modus der erfaßten Zustandslogikdaten muß von dem Benutzer, der Konfigurationsinformationen zuführte, bestimmt werden. Zuletzt muß der Benutzer die maxi­ male Puffergröße der Datenpuffer in den erfaßten Zustands­ logikdaten zuführen. Wenn zumindest bestimmte der Puffer in einer zusammenhängenden Menge von Puffern mit fester Größe in dem Speicher enthalten sind, kann die Kenntnis der maxi­ malen Puffergröße erforderlich sein, um korrekte Pufferver­ weise von unkorrekten Pufferverweisen korrekt zu identifi­ zieren (wie es nachfolgend zusätzlich erörtert wird).
Mehrere andere Parameter sind durch den Benutzer konfigu­ rierbar, um die Funktion bei speziellen Anwendungsumgebungen zu verbessern. Eine detaillierte Verwendung dieser anderen Parameter wird nachfolgend erörtert. Unter diesen anderen Parametern (und den zusätzlich bevorzugten vorgegebenen Werten) sind die folgenden:
  • - Pufferbeschreibermaximalgröße in der Anzahl von Bytes/­ Worten (vorzugsweise 64 Byte);
  • - maximaler Durchschnittsleseraum in der Anzahl von erfaß­ ten Zuständen (vorzugsweise 4);
  • - maximaler Durchschnittsschreiberaum in der Anzahl von er­ faßten Zuständen (vorzugsweise 3);
  • - maximaler Pufferzustandsabstandsmultiplizierer (vorzugs­ weise 150);
  • - Versatz des Beschreibers von dem Beginn eines Bereichs (vorzugsweise 0);
  • - Menge der Beschreiberinformationen innerhalb eines Be­ reichs (vorzugsweise 0);
  • - ein komplexer Pufferzeigerbeschreiber (für Pufferzeiger in Beschreibern kleiner als volle 32/64 Bits oder an un­ geradzahligen Positionen in dem Beschreiber< umfaßt vor­ zugsweise eine Bitmaske (vorzugsweise 0xffffffff), eine Bitverschiebungsposition (vorzugsweise 0) und einen Adressenversatz (vorzugsweise 0).
Noch weitere konfigurierbare Parameter können von dem Benut­ zer in einem Element 602 an dem Beginn der Analyse spezifi­ ziert werden, wobei diese Parameter jedoch ohne weiteres während des Betriebs der Verfahren der vorliegenden Erfin­ dung modifiziert werden können, welche erfaßte Zustandslo­ gikdaten auf dem Anzeigebildschirm des Benutzercomputers an­ zeigen. Beispielhafte derartige konfigurierbare Parameter sind die folgenden:
  • - Detailebene von Bereichsbeschreibungen (d. h. Bereichs- ID-Zahl, Bereichsstartadresse, Bereichsendadresse, Be­ reichsgröße und Kombinationen der obigen, die in vorge­ gebenen Anzeigeformaten, wie z. B. "eng", "normal" und "breit", gruppiert sind);
  • - ASCII, EBCDIC, hexadezimal oder eine gemischte Anzeige von erfaßten Zustandslogikdaten;
  • - ASCII, EBCDIC oder hexadezimaler Suchmodus;
  • - eine Pufferbereichsfilterspezifikation, um die angezeig­ ten Daten auf einen speziellen Adressenbereich zu begren­ zen (d. h. entsprechend einer speziellen intelligenten I/O-Schnittstelle).
Die Verwendung der obigen konfigurierbaren Parameter wird erörtert, wann und wo es geeignet ist, und zwar nachfolgend detaillierter in Verknüpfung mit den Verfahrensschritten, welche diese Parameter verwenden. Ein Fachmann wird ohne weiteres erkennen, daß häufig verwendete Konfigurationspara­ meterwerte von dem Benutzer in Dateien für ein späteres Wie­ dergewinnen gespeichert werden können. In solchen Fällen ist das Element 602 betreibbar, um vorher gespeicherte Konfigu­ rationsparameter zur Ausführung der Verfahren der vorliegen­ den Erfindung wiederzugewinnen. Zusätzlich wird ein Fachmann erkennen, daß die Bitbreite dieser Parameter basierend auf den Charakteristika des analysierten Busses variieren kön­ nen.
Ein Element 604 ist ausführbar, um eine vorläufige syntak­ tische Analyse der erfaßten Zustandslogikdaten oder ein "Parsing" derselben durchzuführen, um dieselben in ein internes kanonisches Format umzuwandeln, das in den Da­ tenstrukturen verwendet wird, die mit den Verfahren der vorliegenden Erfindung verknüpft sind. Das Format der erfaßten Zustandslogikdaten kann gemäß den Merkmalen und Fähigkeiten des spezifischen Logikanalysators variieren. Das Element 604 extrahiert daher die Informationen, die für die Analyse und Anzeige der Verfahren der vorliegenden Erfindung benötigt werden. Die extrahierten Daten werden in Datenstrukturen ge­ speichert, die für die Analyse und Anzeige der Verfahren der vorliegenden Erfindung nützlich sind. Insbesondere extra­ hiert das Element 604 zumindest die folgenden Elemente für jeden Zustand in den erfaßten Zustandslogikdaten:
  • - einen Adressenwert;
  • - einen Datenwert, dem Adressenwert entsprechend;
  • - einen Lesen/Schreiben-Zugriffszustand, der dem Zugriff auf den Adressenwert entspricht;
  • - einen Speicher- oder I/O-Raumzugriffsstatus, der dem Zu­ griff auf den Adressenwert entspricht;
  • - eine Zustandsnummer (ein Versatz in den erfaßten Zu­ standslogikdaten).
Weitere Anteile der erfaßten Zustandslogikdaten können zum Analysieren und Anzeigen von Informationen bezüglich spezi­ eller Busanwendungen nützlich sein. Bestimmte Logikanalysa­ toren erfassen beispielsweise eine Zeitetikette oder eine "Zeit-Tag", die mit jedem erfaßten Zustand verknüpft ist. Diese Zeitgebungsinformationen können von den Verfahren der vorliegenden Erfindung verwendet werden, um Verhaltensas­ pekte des getesteten Systems zu analysieren, wie sie durch die erfaßten Zustandslogikdaten dargestellt sind. Die somit aus den erfaßten Zustandslogikdaten extrahierten Daten werden in einem Array von Strukturen gespeichert, dessen Felder die oben extrahierten Elemente darstellen. Dieses Array von Speicherverweisen wird dann verwendet, um die Analyse gemäß den Verfahren der vorliegenden Erfindung durchzuführen.
Ein Eigner-Identifizierer kann ebenfalls jeder Transaktion in den erfaßten Zustandslogikdaten hinzugefügt werden, welcher dazu dient, zu bezeichnen, welches Gerät die Transak­ tion ursprünglich ausgelöst hat. Dies kann nützlich sein, wenn mehrere Entitäten vorhanden sind, die den Bus gemeinsam benutzen. Eine Farbcodierung kann verwendet werden, um den Busverkehr von diesen mehreren Entitäten zu differenzieren, indem die erfaßten Busverkehrszustände angezeigt werden, die jedem Eigneridentifizierer entsprechen, und zwar in einem entsprechenden Farbcode. Der Eigneridentifizierer kann durch von einem Benutzer gelieferte Informationen zugeführt wer­ den, oder derselbe kann automatisch durch die Verfahren der vorliegenden Erfindung bestimmt werden, wenn ausreichende Informationen in jedem erfaßten Zustand geliefert werden (wenn die Bussignale Geräteidentifikationsinformationen ent­ halten).
Die analysierten Daten, die von den erfaßten Zustandslogik­ daten extrahiert werden, werden in einem Array (der nachfol­ gend als syntaktisch analysiertes oder "geparstes" Daten­ array bezeichnet wird) zum Verweis durch die folgenden Ele­ mente gespeichert werden. Insbesondere verwenden die Elemen­ te 606 bis 610 das syntaktisch analysierte Datenarray, um weitere Datenstrukturarrays zu bauen. Das Element 606 analy­ siert das syntaktisch analysierte Datenarray, um Speicherzu­ griffsbereiche zu orten. Der Betrieb des Elements 606 baut daher ein Array von Datenstrukturen, welches Bereiche von Speicherzugriffen in dem syntaktisch analysierten Datenarray beschreibt (nachfolgend in dieser Anmeldung als Bereichsbe­ schreibungsarray bezeichnet). Elemente 608 und 610 sind dann unter Verwendung des Bereichsbeschreibungsarrays und des syntaktisch analysierten Datenarrays betreibbar, um Puffer­ verweise bzw. Pufferbeschreiberverweise in den Bereichen zu identifizieren. Die Elemente 608 und 610 bauen daher Arrays von Datenstrukturen, welche die definierenden Parameter oder Pufferbeschreiber bzw. Puffer beschreiben, auf die in den georteten Bereichen verwiesen wird. Im wesentlichen ortet diese Kernfunktion der Verfahren der vorliegenden Erfindung auf effektive Art und Weise Speicherzugriffe, die logisch verwandt sind, trotz der Tatsache, daß sie in den erfaßten Zustandslogikdaten weit verstreut sind.
Insbesondere ist das Element 606 betreibbar, um Speicherzu­ griffsbereiche innerhalb der Zustandslogikdaten, wie sie in den internen Datenstrukturen gespeichert sind, zu orten. Ein Speicherzugriffsbereich ist ein Teilsatz der Zustände der erfaßten Zustandslogikdaten mit dem Attribut des Identifi­ zierens benachbarter Adressen. Diese Speicherzugriffsberei­ che können ebenfalls basierend auf Informationen unterteilt werden, die nachfolgend gesammelt oder auf andere Art und Weise von den Verfahren der vorliegenden Erfindung abgelei­ tet werden.
Fig. 9 ist ein Flußdiagramm, das zusätzliche Details des Be­ triebs des Elements 606 liefert, um Speicherzugriffsbereiche in den erfaßten Zustandslogikdaten zu orten. Insbesondere baut ein Element 900 von Fig. 9 ein Array aus den erfaßten Daten, die oben erörtert wurden, und die in aufsteigender Reihenfolge bezüglich des Adressenwerts sortiert sind. Das sortierte Array wird dann durch einen Betrieb eines Elements 902 gemäß der Eigenschaft der benachbarten sequentiellen Adresseninkremente gruppiert. Die benachbarte sequentielle Eigenschaft wird durch die Adresse der Transaktion bestimmt. Insbesondere muß eine Adresse eines Speicherzugriffs in ei­ nem Puffer der Adresse des nächsten Speicherzugriffs in dem Puffer vorausgehen. Der spezifische Adresseninkrementwert wird aus dem speziellen Bus und der Anwendung bestimmt (z. B. 4 oder 8 Bytes in dem Fall eines 32- bzw. 64-Bit-PCI-Bus­ ses).
Ein Element 904 ist dann betreibbar, um den Durchschnitts­ raum der Speicherzugriffe zu bestimmen, welcher den identi­ fizierten Speicherzugriffsbereich umfaßt. Der Durchschnitts­ raum ist die Durchschnittszahl der erfaßten Zustände in den erfaßten Zustandslogikdaten zwischen aufeinanderfolgenden Speicherverweisen in dem Bereich. Wie es an anderer Stelle angemerkt ist, können andere Daten in den erfaßten Zustands­ logikdaten Zeitstempelwerte umfassen. In einem solchen Fall kann der Durchschnittsraum basierend auf Durchschnitts­ zeitdifferenzen zwischen aufeinanderfolgenden erfaßten Zu­ ständen des Bereichs bestimmt werden.
Wieder bezugnehmend auf Fig. 6 ist nun ein Element 608 be­ treibbar, um Speicherzugriffsbereiche zu orten, welche wahr­ scheinlich Pufferbeschreibern entsprechen. Wie es oben ange­ merkt wurde, sind Pufferbeschreiber Datenstrukturen, die in einer solchen I/O-Architektur mit gemeinsam verwendetem Speicher verwendet werden, um die angeforderte I/O-Operation zu beschreiben, die einen Zeiger auf den Datenpuffer umfaßt, der mit der Lesen- oder der Schreiben-Operation verknüpft ist. Bereiche, welche wahrscheinlich Pufferbeschreibern entsprechen, können daher durch ihren Dateninhalt identifi­ ziert werden (sie enthalten z. B. Zeiger auf einen Speicher­ zugriffsbereich, der oben durch einen Betrieb des Elements 606 identifiziert worden ist). Abhängig von den derart geor­ teten Pufferbeschreibern können Speicherzugriffsbereiche un­ terteilt werden, um die Tatsache wiederzugeben, daß in einem einzigen Speicherzugriffsbereich, der als Puffer enthaltend identifiziert ist, scheinbar auf mehrere Puffer verwiesen wird.
Die Fig. 10 und 11 sind Flußdiagramme, die zusätzliche De­ tails des Betriebs des Elements 608 liefern. Elemente 1000 bis 1006 von Fig. 10 sind betreibbar, um doppelt verschach­ telte Schleifenkonstrukte zu initialisieren. Die äußerste Schleife, die durch ein Element 1000 initialisiert wird, verarbeitet jeden Speicherbereich, der durch einen Betrieb des obigen Elements 606 versuchsweise identifiziert wurde, bis das Element 1002 bestimmt, daß keine zu verarbeitenden Bereiche verbleiben. Eine Zeigervariable "P" wird durch ei­ nen Betrieb des Elements 1002 auf den nächsten zu verarbei­ tenden Bereich eingestellt. Für jeden Bereich, auf den durch P gezeigt wird, versuchen die Elemente 1004 bis 1020 zu be­ stimmen, ob der Bereich einer ist, der Pufferbeschreiber enthält. Das Element 1004 initialisiert ein inneres Schlei­ fenkonstrukt, um alle Speicherzugriffe innerhalb des gegenwärtigen Bereichs P zu verarbeiten (bis zu der maximalen Länge eines Puffers, wie es durch die oben erwähnten Konfi­ gurationsparameter bestimmt ist). Eine Zeigervariable "Q" wird durch einen Betrieb des Elements 1004 eingestellt, um auf den nächsten Speicherverweis innerhalb des gegenwärtigen zu verarbeitenden Bereichs P zu zeigen. Jeder Speicherzu­ griff Q in dem vorliegenden Bereich P wird dann durch Ele­ mente 1008 bis 1020 verarbeitet, bis das Element 1006 be­ stimmt, daß keine weiteren zu verarbeitenden in dem gegen­ wärtigen Bereich P vorhandenen Speicherzugriffe verbleiben.
Die tatsächlichen Pufferadressenzeiger in dem Beschreiber können (müssen jedoch nicht) auf dieselbe Art und Weise co­ diert sein. Die vom Benutzer zugeführten Konfigurationspara­ meter (welche oben beschrieben wurden) können verwendet wer­ den, um den tatsächlichen Pufferzeiger zu decodieren, bevor sie, wie es oben in Fig. 10 beschrieben wurde, analysiert werden können. Dieses Decodierverfahren kann das Verschie­ ben, das Maskieren, das Hinzufügen von Versatzwerten, usw. umfassen, bevor der resultierende Wert analysiert werden kann, um seine Gültigkeit als Pufferzeiger in einem Be­ schreiber zu bestimmen.
Wenn das Element 1006 bestimmt, daß alle zu verarbeitenden Zugriffe in dem gegenwärtigen Bereich P inspiziert worden sind, um zu bestimmen, ob sie Pufferbeschreiber darstellen, sind nun die Elemente 1008 und 1010 betreibbar, um zu be­ stimmen, ob der Bereich in der Tat derart erscheint, daß er Pufferbeschreiber erhält. Insbesondere bestimmt das Element 1008, ob ein Zähler anzeigt, daß die Anzahl von Speicherzu­ griffen, welche als Beschreiber erscheinen, hoch genug ist, um die Folgerung zu ziehen, daß der Bereich in der Tat Puf­ ferbeschreiber enthält. Die Anzahl von Speicherzugriffen, die in dem Bereich gefunden werden, wird durch den Zählwert der in demselben gefundenen Zeiger geteilt. Das Resultat dieser Dichteberechnung muß kleiner als die Pufferbeschrei­ bermaximalgröße für den Bereich sein, damit derselbe durch einen Betrieb des Elements 1010 identifiziert wird, als daß er ein Bereich ist, der Beschreiber enthält. Wenn der Vergleich offenlegt, daß dieser Dichtewert für Zeiger, die in dem Bereich gefunden wurden, zu hoch ist, dann wird der Speicherbereich durch den Betrieb des Elements 1010 nicht als ein Beschreiberbereich identifiziert. Ob der Bereich derart markiert ist oder nicht, die Verarbeitung wird mit dem Element 1000 fortgesetzt, um den nächsten Bereich (wenn einer vorhanden ist) zu verarbeiten, der durch den Betrieb des Elements 606, wie es oben beschrieben wurde, ver­ suchsweise geortet worden ist.
Wenn das Element 1006 bestimmt, daß in dem gegenwärtigen Be­ reich P ein anderer Speicherverweis Q verarbeitet werden soll, wird die Verarbeitung mit den Elementen 1012 bis 1020 von Fig. 11 fortgesetzt. Das Element 1012 ist betreibbar, um aus dem Datenwert, der dem Speicherverweis Q entspricht, zu bestimmen, ob der Speicherverweis auf einen weiteren Spei­ cherzugriffsbereich zeigt, der durch den Betrieb des obigen Element 606 versuchsweise identifiziert wurde. Wenn das nicht so ist, wird die Verarbeitung mit dem Element 1004 von Fig. 10 fortgesetzt, um einen weiteren Speicherverweis in dem gegenwärtigen Bereich P zu verarbeiten. Wenn der Spei­ cherverweis Q des gegenwärtigen Bereichs P derart erscheint, daß er auf einen weiteren Bereich in den versuchsweise iden­ tifizierten Speicherzugriffsbereichen zeigt, dann wird eine Zeiger-gefunden-Zählervariable durch einen Betrieb des Ele­ ments 1014 inkrementiert, um anzuzeigen, daß der gegenwärti­ ge Bereich P einen Pufferbeschreiberbereich darstellen kann. Wie es oben erwähnt wurde, wird der Zählerwert bei dem Test des Elements 1008 von Fig. 10 verwendet, um zu bestimmen, ob eine ausreichende Anzahl von Speicherverweisen in dem gegen­ wärtigen Bereich P als Pufferbeschreiber erscheint. Der Zäh­ lerwert wird in dem Element 1000 zurückgesetzt, um die Ver­ arbeitung jedes Bereichs zu starten.
Im allgemeinen zeigen Pufferbeschreiber auf Puffer, obwohl in bestimmten Fällen ein Pufferbeschreiber ebenfalls einen Zeiger auf einen anderen Beschreiber enthalten kann (wie z. B. eine verknüpfte Liste von Beschreibern oder indirekten Zeigerverweisen). In einem solchen Fall kann der Bereich, auf den gezeigt wird, einen anderen Pufferbeschreiberbereich darstellen.
Das Element 1018 bestimmt dann, ob der Zeiger in dem gegen­ wärtigen Pufferbeschreiber des Speicherverweises Q auf den Beginn eines weiteren Speicherzugriffsbereichs oder auf eine bestimmte andere Position in einem anderen Speicherzugriffs­ bereich zeigt. Wenn der Zeiger in dem Speicherverweis Q auf eine andere Position als den Beginn eines Speicherzugriffs­ bereichs zeigt, dann ist das Element 1020 betreibbar, um den Bereich, auf den gezeigt wird, zu markieren, als daß dersel­ be möglicherweise mehrere Unterbereiche enthält, welche wei­ ter identifiziert und getrennt werden (wie es nachfolgend erörtert wird). Es sollte ebenfalls angemerkt werden, daß Zeiger auf Puffer, die indirekt sind (d. h. das Zeigen auf einen anderen Bereich als den des tatsächlichen Puffers), keine Unterteilung von Puffern in dem indirekten Bereich be­ wirken werden. Der indirekte Bereich wird statt dessen als ein Bereich identifiziert, der Pufferbeschreiber enthält, und zwar aufgrund einer ausreichend hohen Dichte von Zeigern im Vergleich zu Puffern innerhalb des Bereichs. Zusätzlich kann ein Zeiger auf eine Grenzposition zeigen, die nicht mit der Buswortgröße ausgerichtet ist. Ein solcher Zeiger wird als gültiger Zeiger erkannt, wenn der spezielle Bus Zugriffe auf weniger als eine gesamte Busworteinheit von Daten unter­ stützt (z. B. ein Zeiger auf eine 16-Bit- oder auf eine 8- Bit-Grenze innerhalb einer 32-Bit-Buswortgröße). Die Verar­ beitung wird dann mit dem Element 1004 von Fig. 10 fortge­ setzt, um zusätzliche Speicherverweise innerhalb des gegen­ wärtigen Bereichs P zu verarbeiten.
Wieder bezugnehmend auf Fig. 6 ist das Element 610 nun be­ treibbar, um Puffer aufzubauen, die in den Speicherzugriffs­ bereichen geortet wurden, die oben durch den Betrieb des Elements 606 identifiziert worden sind, und die durch den Betrieb des Elements 608 nicht als Pufferbeschreiber markiert wurden. Zusätzlich analysiert das Element 610 jeden möglichen Unterbereich innerhalb der Bereiche, die durch den Betrieb des Elements 608 identifiziert worden sind. Die Fig. 12 und 13 sind Flußdiagramme, die den Betrieb des Elements 610 detaillierter beschreiben.
Elemente 1200 bis 1208 von Fig. 12 sind bei jedem Bereich, der durch den Betrieb des obigen Elements 608 geortet wurde, iterativ betreibbar. Das Element 1200 von Fig. 12 ist daher betreibbar, um zu bestimmen, ob von den Elementen 1202 bis 1208 von Fig. 12 ein weiterer Bereich verarbeitet werden soll. Wenn dies nicht so ist, ist die Verarbeitung des Ele­ ments 610 vollendet. Andernfalls ist das Element 1202 nach­ folgend betreibbar, um die Verarbeitung zu initialisieren, die erforderlich ist, um Puffer innerhalb des gegenwärtigen Bereichs zu orten. Der Betrieb des Elements 610 erzeugt eine Liste von Puffern, die innerhalb des Bereichs identifiziert werden. Das Element 1202 initialisiert daher die Liste von identifizierten Puffern für die Verarbeitung des gegenwärti­ gen Bereichs.
Das Element 1204 führt die Verarbeitung durch, die erforder­ lich ist, um Puffer innerhalb des gegenwärtigen Bereichs zu identifizieren, welche an der niedrigen Adresse des Bereichs starten. Die Verarbeitung des Elements 1204 ist im Wesen re­ kursiv, um Puffer innerhalb des gegenwärtigen Bereichs zu erkennen, der an einer gegebenen Adresse in dem Bereich startet. Die Verarbeitung des Elements 1204 wird in dieser Anmeldung auch als Kernpufferkonstruktionsalgorithmus bezeichnet, und dieselbe wird wiederverwendet, um weitere Puffer innerhalb des gegenwärtigen Bereichs zu konstruieren (zu identifizieren oder zu erkennen), die an anderen Posi­ tionen als der Beginn-Grenze des Bereichs starten. Details der Verarbeitung des Elements 1204 werden nachfolgend bezug­ nehmend auf Fig. 13 erörtert.
Das Element 1206 von Fig. 12 ist nun betreibbar, um zu be­ stimmen, ob die Größe des gegenwärtigen Bereichs (in Speicheradressenpositionen gemessen) größer als die maximale Puffergröße ist. Die maximale Puffergröße ist ein konfigu­ rierbarer Parameter der Verfahren der vorliegenden Erfin­ dung, der von dem Benutzer anwendungsspezifisch eingestellt wird, um die Verfahren an eine spezielle Anwendung oder an ein spezielles Datenaustauschprotokoll anzupassen. Wenn die Größe des Bereichs kleiner oder gleich der maximalen Puffer­ größe ist, ist die Pufferkonstruktion für den gegenwärtigen Bereich vollendet. Die Konstruktion von Puffern, die an der Beginn-Grenze des Bereichs starten, wird sichergestellt, um alle gültigen Puffer in diesem Bereich zu orten. Die Verar­ beitung wird daher fortgesetzt, indem zu dem Element 1200 schleifenmäßig zurückgesprungen wird, um den nächsten Be­ reich zu verarbeiten. Andernfalls wird die Verarbeitung mit dem Element 1208 fortgesetzt, um Puffer zu konstruieren (zu erkennen), die an Positionen innerhalb des gegenwärtigen Bereichs starten, die sich von der Startgrenze unterschei­ den. Die Verarbeitung wird dann durch schleifenmäßiges Zu­ rückspringen zu dem Element 1200 fortgesetzt, um zusätzliche Bereiche zu verarbeiten. Die Verarbeitung des Elements 610 ist vollendet, wenn das Element 1200 bestimmt, daß alle Be­ reiche für das Aufbauen von Puffern in denselben verarbeitet worden sind.
Die Elemente 1204 und 1208 führen eine ähnliche Verarbeitung durch, indem die Verarbeitung des Kernpufferkonstruktions­ algorithmus wiederverwendet wird. Die Erfassung von Puffern an dem Beginn der Speicherbereiche vor denen, die an anderen Positionen innerhalb des Speicherbereichs starten können, ist eine Heuristik, die beim korrekten Identifizieren kor­ rekter Pufferzugriffe von potentiell zerstörenden Speicher­ zugriffen in dem Speicherbereich hilft. Ein Fachmann wird ohne weiteres erkennen, daß andere heuristische Tests durch­ geführt werden können, um bei der Erkennung von korrekten Pufferverweisen im Unterschied zu anderen Speicherzugriffen in einem Bereich zu helfen.
Ein Nebenprodukt der Verarbeitung des Elements 610 ist der Aufbau eines Arrays von Datenstrukturen, das jeden identifi­ zierten (konstruierten) Puffer beschreibt, durch den Kern­ pufferkonstruktionsalgorithmus. Für jeden solchen identifi­ zierten Puffer umfaßt eine Datenstruktur folgende Felder:
  • - den Pufferdateninhalt (als eine hexadezimale, ASCII- oder EBCDIC-Zeichenkette);
  • - die Pufferbezeichnung (den Namen), die dem Puffer zuge­ wiesen ist;
  • - die Startadresse des Puffers;
  • - die Endadresse des Puffers;
  • - die Startzeitetikette des Puffers;
  • - die Endzeitetikette des Puffers;
  • - die Startzustandsnummer (den -Zustandsversatz) des Puf­ fers;
  • - die Endzustandsnummer (den -Zustandsversatz) des Puffers; und
  • - eine Zerstörungsflag (die anfänglich zurückgesetzt ist und durch eine nachfolgend erfaßte Zerstörung gesetzt wird).
Wieder bezugnehmend auf Fig. 6 bestimmt das Element 612 nun, ob der Benutzer lediglich die Vorverarbeitung der erfaßten Zustandslogikdaten anforderte. Die Verarbeitung der Elemente 600 bis 610 erfaßt Zustandslogikdaten und wandelt die erfaß­ ten Daten in Datenstrukturen um, die bei der späteren An­ zeige von Puffern und Pufferbeschreibern, die in den erfaß­ ten Daten gefunden werden, nützlich sind. Diese Datenstruk­ turen, die eine interne Darstellung sind, die für die Anzei­ geschritte der Elemente 614 bis 646 nützlich sind, können für eine spätere Betrachtung gespeichert werden. Wenn das Element 612 bestimmt, daß die Vorverarbeitung der erfaßten Zustandslogikdaten angefordert wurde, wird die interne Dar­ stellung der Datenstrukturen in einem dauerhaften Speicher gespeichert, der den Verfahren der vorliegenden Erfindung zugeordnet ist, und das Verfahren vollendet die Verarbei­ tung. Andernfalls wird die Verarbeitung an dem Element 614 fortgesetzt, um eine Anzeige der Analyseergebnisse aus den internen Datenstrukturen zu beginnen, die durch Analyse der erfaßten Zustandslogikdaten erzeugt wurden. Ein Fachmann wird ohne weiteres erkennen, daß die Verfahren der vorlie­ genden Erfindung in einem Schritt 614 eingeleitet werden können, der mit vorverarbeiteten erfaßten Zustandslogikdaten gespeist wird, die durch einen früheren Betrieb der Elemente 600 bis 612 vorher in dem dauerhaften Speicher gespeichert wurden.
Analyseanzeige und Benutzerschnittstelle
Die Resultate der Analyse der Puffer und der Pufferbeschrei­ ber, die durch den Betrieb der obigen Elemente 600 bis 610 durchgeführt wird, werden dem Benutzer zusammen mit einer weiteren optionalen Analyse durch den Betrieb der Elemente 614 bis 646 der Fig. 6 bis 8 präsentiert. Die Fig. 4 und 5, welche oben erörtert wurden, sind beispielhafte Computeran­ zeigebildschirme zur Darstellung der Analyseergebnisse. Ins­ besondere zeigt das Element 614 die konstruierten Puffer auf der Gitteranzeige von Fig. 4 an. Die Y-Achse von Fig. 4, wie es oben angemerkt wurde, stellt die Adressenbereiche dar, die in den erfaßten Zustandslogikdaten identifiziert wurden, während Marken entlang der X-Achse in der Zeile (dem Band), die (das) dem Bereich entspricht, spezielle erfaßte Zustände anzeigen, die für einen Verweis auf eine Speicherposition in dem Bereich sprechen.
Um dem Benutzer beim Erkennen visuell zu helfen, daß eine spezielle Sammlung von Speicherverweisen in dem Speicherbe­ reich wahrscheinlich einen Speicherverweis umfaßt, ist die Sammlung von Verweisen durch Verbinden derselben mit einer farbcodierten Linie hervorgehoben. Die Linie, die Verweise verbindet, hilft dem Benutzer dabei, die Verweise als einen verwandten Satz von Speicherzugriffen, die einen Pufferver­ weis aufweisen, zu visualisieren. Die Farbe der Linie kann verwendet werden, um den Typ von Verweisen (z. B. Lesevor­ gänge gegenüber Schreibvorgängen, Hostzugriffe gegenüber I/O-Schnittstellenzugriffen, usw.) anzuzeigen. Zusätzlich identifiziert ein Graphikanzeiger am linken Rand der Anzei­ ge, in der die Speicherbereichsparameter angezeigt sind, auf visuelle Art und Weise den Speicherbereich als einen, der Puffer enthält.
Ein Fachmann wird ohne weiteres erkennen, daß die Verarbei­ tung des Elements 610 (beispielsweise), um Pufferverweise innerhalb der Speicherzugriffsbereiche zu konstruieren, mit der Anzeigeerzeugung des Elements 614 überlappt sein kann. Auf eine solche Art und Weise kann die Anzeige erzeugt wer­ den, sobald die Pufferverweise innerhalb der erfaßten Zu­ standslogikdaten erkannt werden. Solche parallelen/gleich­ zeitigen Verarbeitungstechniken sind für Fachleute bekannt.
Das Element 614 ist ferner betreibbar, um eine Bezeichnung (einen Namen), der mit jedem Puffer verknüpft ist, der auf dem Computeranzeigebildschirm des Benutzers angezeigt ist, zu erzeugen. Der Benutzer kann später einen speziellen der angezeigten Puffer durch "Rechts-Anklicken" der Bezeichnung des Puffers auswählen. Der Dateninhalt eines solchen ausge­ wählten Puffers kann dann in einem Textfenster entweder in einer hexadezimalen Rohform oder als ASCII- oder EBCDIC- Textformat betrachtet werden. Das Element 502 von Fig. 5, das später erörtert wird, stellt ein beispielhaftes Fenster dar, das eine Textanzeige eines ausgewählten Puffers lie­ fert.
Das Element 616 fügt dann die Pufferbeschreiberanzeigen zu der Computerbildschirmanzeige hinzu, die durch das Element 614 oder durch Benutzerauswahl eingeleitet wurde. Insbeson­ dere, wie es oben erörtert wurde, werden die Pufferbeschrei­ ber auf der Gitteranzeige auf eine Art und Weise angezeigt, die der Anzeige der Puffer ähnlich ist. Zusätzlich werden Pfeilvektoren zwischen den angezeigten Pufferbeschreibern und dem entsprechenden Puffer, auf den der Beschreiber zeigt, gezeichnet. Die Pfeile helfen dem Benutzer beim Vi­ sualisieren der Verknüpfung zwischen einem Zugriff auf einen Pufferbeschreiber und dem verknüpften Zugriff auf den ent­ sprechenden Puffer.
Der Pfeil wird vertikal von dem Punkt des Pufferbeschreiber­ speicherzugriffs zu dem entsprechenden Speicherbereich gezo­ gen, der den Puffer enthält, auf den von dem Pufferbeschrei­ ber verwiesen wird. Die tatsächlichen Speicherzugriffe, die den entsprechenden Pufferverweis umfassen (d. h. die ent­ sprechenden DMA-Zugriffe), können eine bestimmte Zeit später in folgenden erfaßten Zuständen auftreten, die in zeitlicher Reihenfolge von links nach rechts über der X-Achse der An­ zeige angezeigt werden. Die horizontale Beabstandung zwi­ schen der vertikalen Linie (dem Pfeil) von dem Pufferbe­ schreiber zu dem entsprechenden Pufferverweis (den DMA-Ver­ weisen) zeigt die Zeitverzögerung (in Anzahlen von Zuständen gemessen) zwischen den zwei Ereignissen an. Diese Beabstan­ dung liefert eine sichtbare Rückkopplung für den Benutzer bezüglich der Zeitgebung zwischen dem Pufferbeschreiberver­ weis und dem tatsächlichen Pufferverweis. Solche visuellen Informationen schaffen dem Benutzer Verhaltensmessungen des zugrundeliegenden Datenaustauschprotokolls in einem einfach zu interpretierenden Format. Wie es an anderer Stelle ange­ merkt ist, können die erfaßten Daten Zeitstempelwerte zur Verwendung beim Bestimmen der tatsächlichen relativen Zeit­ gebung zwischen interessierenden Zuständen umfassen. In ei­ nem solchen Fall kann die Verhaltensanalyse bezüglich der tatsächlichen Zeitdifferenzen und nicht bezüglich der Anzahlen von dazwischenliegenden Zuständen präsentiert werden.
Das Element 618 von Fig. 7 ist nun betreibbar, um Puffer- oder Pufferbeschreiberzugriffe hervorzuheben, die Datenzer­ störungszugriffe darstellen können. Mehrere heuristische Tests werden bei der Verarbeitung des Elements 618 angewen­ det, um einen wahrscheinlich zerstörenden Zugriff auf Puffer oder Pufferbeschreiber zu orten. Ein Schreibzugriff auf ei­ nen Pufferinhalt, bevor vorher geschriebene Daten von dem­ selben gelesen werden, zeigt wahrscheinlich beispielsweise einen zerstörenden Zugriff auf diesen Puffer an. Viele ande­ re heuristische Tests können verwendet werden, um potentiell zerstörende Speicherzugriffe auf identifizierte Puffer und Pufferbeschreiber zu identifizieren. Genauso werden zerstö­ rende Speicherzugriffe, die derart identifiziert worden sind, anschließend auf dem Computeranzeigebildschirm hervor­ gehoben. Insbesondere heben die Verfahren der vorliegenden Erfindung einen wahrscheinlich zerstörten Puffer oder Puf­ ferbeschreiber durch Zeichnen eines farbig hervorgehobenen (roten) rechteckigen Kastens um den identifizierten Puffer herum hervor. Ein Fachmann wird ohne weiteres erkennen, daß andere bekannte Benutzerschnittstellentechniken verwendet werden können, um die potentiell zerstörenden Speicherzu­ griffe hervorzuheben.
Eine erste Form der Pufferzerstörung, die durch die Verfah­ ren der vorliegenden Erfindung erkannt wird, wird in dieser Anmeldung als "lokale Pufferzerstörung" bezeichnet. Zuerst wird ein Rechteck mit dem Puffer verknüpft, der in den X/Y- Koordinatenraum Zustandsnummer/Adresse abgebildet worden ist. Die untere linke Ecke des Puffers ist der Startzustand, der den Puffer- oder Beschreiberverweis umfaßt, während die obere rechte Ecke der Endzustand des Verweises ist. Die ge­ samte Anzahl von Speicherzugriffen in dem Rechteck sollte gleich der Größe des Puffers sein. Eine lokale Pufferzerstö­ rung ist durch zusätzliche Verweise innerhalb des Rechtecks gekennzeichnet.
Fig. 14 zeigt graphisch die Charakterisierung eines lokalen Pufferzerstörungszustands. Die in Fig. 14 plazierten Buch­ staben stellen erfaßte Speicherzugriffe in einem Bereich der erfaßten Zustandslogikdaten dar. Der Kasten, der die Buch­ staben umgibt, stellt die Grenzen des Rechtecks dar, das durch den Puffer- oder Beschreiberverweis in dem Bereich de­ finiert ist. Die Speicherzugriffe, die durch den Buchstaben "L" markiert sind, stellen legale Speicherverweise dar, wel­ che den Puffer- oder den Beschreiberverweis umfassen. Der Speicherzugriff, der durch den Buchstaben "E" in Fig. 14 markiert ist, stellt einen fehlerhaften Speicherzugriff dar (E = Error = Fehler). Ein solcher fehlerhafter Speicherzu­ griff kann durch eine ungültige Zeigervariable in einem Pro­ gramm oder durch einen unkorrekt initialisierten DMA-Verweis durch eine I/O-Schnittstelle erzeugt werden. Obwohl der in Fig. 14 dargestellte Puffer fünf legale Speicherzugriffe (durch die Zeichen "L" markiert) aufweist, werden innerhalb der Begrenzungen des Rechtecks des Puffers sechs Zugriffe geortet. Dieser Puffer von Fig. 14 kann dann durch Puffer­ zerstörungsheuristikverfahren hervorgehoben werden, als daß derselbe möglicherweise zerstört ist. Der zerstörte Puffer­ verweis wird dann durch ein graphisches Rechteck auf dem Be­ nutzeranzeigebildschirm, wie es oben angemerkt wurde, her­ vorgehoben. Ein Fachmann wird ohne weiteres erkennen, daß spezielle Anwendungen der vorliegenden Erfindung für die Analyse einer speziellen Busstruktur und eines speziellen Protokolls durch heuristische Tests verbessert werden kön­ nen, welche doppelte Speicherzugriffe zwischen verwandten Stößen oder "Bursts" von Zugriffen erkennen. Die Verfahren der vorliegenden Erfindung sind daher für eine spezielle Anwendung abgestimmt, um mehrere derartige Charakteristika der speziellen Busstruktur oder des speziellen Protokolls zu berücksichtigen.
Fig. 15 ist eine graphische Zeichnung eines Puffers, der durch Hohe-Adresse-Pufferzerstörungsheuristikverfahren der vorliegenden Erfindung als zerstört erkannt worden ist. In Fig. 15 zeigen die Speicherzugriffe, die mit "L" und "E" markiert sind, wie in Fig. 14 oben legale (L) bzw. fehler­ hafte (E) Speicherzugriffe innerhalb eines Speicherbereichs an. Wie oben zeigt der Kasten, der alle markierten Zustände umgibt, die Grenzen des Rechtecks des Pufferverweises an. Ein Pufferverweis kann durch eine Hohe-Adresse-Pufferzer­ störung gekennzeichnet sein, wenn höhere Adressen des Puf­ fers offensichtlich nicht verwendet werden, wenn jedoch auf dieselben durch fehlerhafte Speicherzugriffe zugegriffen wird. Der gestrichelte Kasten in dem Kasten von Fig. 15 zeigt die Grenzen eines Rechtecks innerhalb des Rechtecks des vollständigen Puffers an, in dem hohe Adressen nicht verwendet werden sollen. Ein Pufferzugriff in diesem gestri­ chelten Kasten zeigt einen zerstörten Puffer an, der von den Hohe-Adresse-Pufferzerstörungstechniken der vorliegenden Er­ findung erkannt worden ist. Ein Fachmann wird ohne weiteres erkennen, daß die in Fig. 15 gezeichnete Zerstörung durch Anwendung der lokalen Pufferzerstörungstechniken, die oben bezugnehmend auf Fig. 14 beschrieben sind, nicht erkannt werden dürfte.
Fig. 16 ist eine graphische Darstellung eines Puffers, der durch Zwischen-Puffer-Zerstörungsheuristikverfahren der vor­ liegenden Erfindung als zerstört erkannt worden ist. Zwei Pufferverweise 1600 und 1602 sind in Fig. 16 innerhalb des Speicherbereichs gezeigt. Wie oben sind die Rechtecke, die die Puffer begrenzen, durch einen Kasten um jeden Puffer an­ gezeigt. Zeichen "L" zeigen legale Speicherzugriffe auf den Puffer innerhalb des Speicherbereichs an. Ein gestrichelter Kasten zeigt die Zustände zwischen den zwei legalen Puffer­ verweisen an. Jeder Speicherzugriff in dieser gestrichelten Kastenregion zwischen den zwei legalen Pufferverweisen kann einen zerstörenden Speicherverweis darstellen. Der Speicher­ zugriff, der mit "E" in Fig. 16 innerhalb des gestrichelten Kastens zwischen den zwei legalen Pufferverweisen gekenn­ zeichnet ist, stellt daher einen fehlerhaften Speicherzu­ griff dar.
Ein Fachmann wird ohne weiteres erkennen, daß der Hohe- Adresse-Pufferzerstörungstest, der in Fig. 15 gezeigt ist, und der Zwischen-Puffer-Zerstörungstest, der in Fig. 16 ge­ zeigt ist, nur nützliche heuristische Tests sind, wenn die Pufferverweise lediglich an der Startadresse des entspre­ chenden Speicherbereichs starten. Wenn, wie es oben ange­ merkt wurde, der Pufferbereich größer als die Puffergröße ist, dann würden die fehlerhaften Speicherverweise, die mit den Zeichen "E" in den Fig. 15 und 16 bezeichnet sind, durch den Betrieb des oben gezeigten Elements als gültige Puffer­ verweise aufgebaut werden. Die Verfahren der vorliegenden Erfindung helfen dem Benutzer daher beim Identifizieren einer wahrscheinlichen Puffer- und Beschreiberzerstörung. Die Verfahren der vorliegenden Erfindung "schreiten" in dem Sinn des Bereitstellens von Rohinformationen für den Benut­ zer zu einer weiteren Analyse, wenn die heuristischen Ver­ fahren Probleme nicht mit Sicherheit identifizieren können, "nach und nach herab".
Fig. 17 ist eine graphische Darstellung eines Pufferbe­ schreibers, der durch Puffer/Beschreiber-Interaktionszerstö­ rungsheuristikverfahren der vorliegenden Erfindung als wahr­ scheinlich zerstört erkannt wurde. Wie oben bezeichnen die zwei Buchstaben "L" legale Speicherzugriffe auf einen Puffer innerhalb eines Speicherbereichs. Kasten umgeben die Grenze der Pufferverweise. Die Beschreiber D1, D2 und D3 sind Ver­ weise auf einen Beschreiber innerhalb eines Speicherbereichs der erfaßten Zustandslogikdaten. Wie oben bezugnehmend auf das Element 616 beschrieben, werden Pfeile vertikal von dem Beschreiberverweis zu dem Beginn des Speicherbereichs gezo­ gen, der den Puffer enthält, auf den sich der Beschreiber bezieht. D1, D2 und D3 sind daher mit einem Pfeil verknüpft, der auf den Speicherbereich gerichtet ist, der zwei legale Pufferverweise 1700 und 1702 enthält. Wie es in Fig. 17 ge­ zeigt ist, ist der Beschreiberverweis D2 fremd und tritt in der Mitte eines gültigen Verweises auf dem Puffer 1700 auf. Die Verfahren der vorliegenden Erfindung orten einen solchen fremden, ungültigen Beschreiberverweis durch Orten aller Puffer in dem Speicherbereich, auf den der Beschreiber zeigt, für jeden Beschreiberverweis. Wenn das Rechteck eines Pufferverweises die Zustandszahl, die dem Beschreiberverweis entspricht, umfaßt, dann ist der Beschreiberverweis wahr­ scheinlich fehlerhaft, und der Beschreiber wird auf dem Com­ puteranzeigebildschirm des Benutzers hervorgehoben.
Wieder bezugnehmend auf Fig. 7 ist das Element 620 nun be­ treibbar, um Pakete anzusammeln, indem Puffer gemäß Informa­ tionen aneinandergekettet werden, die aus den verweisenden Beschreibern analysiert wurden. Diese Ansammlung ergibt eine Liste von Paketen (und von ihren jeweiligen Dateninhalten), die durch den Startzustand des ersten Puffers jedes Pakets geordnet sind. Wie es oben angemerkt wurde, liefert der Be­ nutzer Parameterinformationen, die die relative Position der Paketlänge und/oder des anderen Endes von Paketanzeigern in­ nerhalb der Beschreiberadressen beschreiben. Ein einzelnes Paket kann eine Größe von einem einzelnen (sogar noch teil­ weise verwendeten) Puffer bis zu mehreren Puffern haben.
Durch Anwenden solcher Benutzerspezifizierten Parameter ist das Element 620 betreibbar, um logische Pakete basierend auf den erfaßten Zustandslogikdaten zu konstruieren. Die Paket­ informationen können dann, wie es oben erwähnt wurde, ver­ wendet werden, um den Dateninhalt eines speziellen Pakets unabhängig von der Anzahl von Puffern, die von dem Paket überspannt werden, anzuzeigen, oder um die Daten-tragenden Abschnitte des Pakets für eine Benutzerspezifizierte Such­ zeichenkette zu suchen. Das Element 620 ist ebenfalls be­ treibbar, um Paketbezogene Informationen mit anderen analy­ tischen Geräten für eine weitere Analyse auszutauschen. Das Element 620 kann beispielsweise seine Paketinformationen zu einem anderen Protokoll-Decodierungs/Anzeige-Paket oder -Ge­ rät übertragen. Solche Geräte/Pakete führen eine spezifische Verarbeitung von spezieller Nützlichkeit zur Analyse des speziellen verwendeten Datenaustauschprotokolls durch. Auf ähnliche Weise kann das Element 620 angeleitet werden, um Protokolldaten von einem anderen Protokollanalysatorgerät zu empfangen, das an dem Kommunikationsmedium angebracht ist (z. B. von einem LAN-Protokollanalysator, der parallel mit dem Logikanalysator arbeitet, der unter den Verfahren der vorliegenden Erfindung betreibbar ist). Die empfangenen Pro­ tokolldaten überlappen im wesentlichen die Zeitperiode, die durch die erfaßte Zustandslogik überdeckt wird, und können daher mit den Paketinformationen korreliert sein, die durch das Element 620 gesammelt werden. Abweichungen, die beim Korrelieren der gesammelten Paketinformationen und der emp­ fangenen Protokolldaten von einem externen Analysator erfaßt werden, können dann auf dem Computeranzeigebildschirm des Benutzers hervorgehoben werden. Die Protokollinformationen, die Ergebnisse des Versuchens der Korrelation der Protokoll­ informationen und beliebige Fehler bei der Korrelation kön­ nen durch einen Betrieb des Elements 620 auf dem Benutzer­ anzeigebildschirm als Reaktion auf eine entsprechende Be­ nutzeranforderung angezeigt werden.
Das Element 622 ist dann betreibbar, um weitere Zustands­ daten, die beispielsweise von einem weiteren Logikanalysator erfaßt werden, der Daten erfaßt, die zwischen dem Hostcompu­ ter und seinem Speicherteilsystem während der gleichen Zeit­ periode, die durch die erfaßten Zustandslogikdaten darge­ stellt ist, erfaßt werden, zu verschmelzen. Eine Verschmelz­ ter-Zustand-Datenanzeige wird dann auf dem Computeranzeige­ bildschirm des Benutzers präsentiert.
Durch Korrelieren und Vergleichen der erfaßten Daten von mehreren analytischen Quellen und durch Erfassen von Daten von mehreren Punkten der Datenkommunikationswege helfen die Verfahren der vorliegenden Erfindung dem Ingenieur dabei, schnell die Wurzelursache eines Datenzerstörungsfehlers zu isolieren. Die Daten von anderen analytischen Quellen werden mit den erfaßten Zustandslogikdaten verglichen, indem die erfaßten Zustände der anderen Quellen mit den erfaßten Zu­ standslogikdaten der vorliegenden Erfindung verschmolzen werden. Wenn die vorliegende Erfindung beispielsweise in ei­ nem Logikanalysator verwendet wird, der an der I/O-Schnitt­ stelle innerhalb eines Hostcomputers angebracht ist, können die Daten auf vorteilhafte Weise mit Daten korreliert und verglichen werden, die von einem anderen Logikanalysator erfaßt werden, der an dem verknüpften Hostcomputer (z. B. an der Hostcomputer-CPU-Speicher-Schnittstelle) angebracht ist. Die Verschmelzung der zwei Quellen der erfaßten Zustands­ logikdaten ortet auf einfache Art und Weise einen ersten Zustand in den erfaßten Daten einer Quelle, welcher einem Zustand in der anderen Quelle entspricht. Folgende Zustände in der ersten Quelle der erfaßten Zustandslogikdaten werden an entsprechende folgende Zustände in der zweiten Quelle von erfaßten Zustandslogikdaten angepaßt.
Wenn solche korrelierten Daten von mehreren Quellen verfüg­ bar sind, können weitere Vergleiche durch den Betrieb der Elemente 620 und 622 durchgeführt werden, um dem Benutzer beim Orten der Wurzelursache von Datenzerstörungsfehlern weiterhin zu helfen. Insbesondere kann ein Datenflußheuri­ stikverfahren der vorliegenden Erfindung auf solche korre­ lierten mehreren Quellen von erfaßten Daten angewendet wer­ den, um eine wahrscheinliche Datenzerstörung zu erfassen, die durch ein unkorrektes Lesen oder Schreiben von Daten in Puffern bewirkt wird. Insbesondere "paaren" die Verfahren der vorliegenden Erfindung Pufferverweise, die Daten in den Puffer schreiben, mit entsprechenden Lesezugriffen auf den Puffer und umgekehrt. Jede Dateneinheit, die von der I/O- Schnittstellenkarte auf einen Puffer geschrieben wird, sollte durch einen Speicherverweis von dem Hostcomputer und umgekehrt gelesen werden. Lesen- und Schreiben-Speicherver­ weise von beiden Seiten sind verfügbar und werden durch den Betrieb der Elemente 620 und 622 korreliert. Lesezugriffe mit keinem entsprechenden vorhergehenden Schreibezugriff werden als wahrscheinliche Ursachen von Datenzerstörungspro­ blemen flagmäßig angezeigt und auf dem Computeranzei­ gebildschirm des Benutzers auf geeignete Art und Weise her­ vorgehoben.
Das Element 626 zeigt eine Zusammenfassung der analytischen Ergebnisse an, um dabei zu helfen, die Aufmerksamkeit des Ingenieurs auf potentielle Ursachen eines Datenzerstörungs­ fehlers zu richten. Zusammenfassungsinformationen können folgende Punkte umfassen:
  • - Gesamtanzahl von identifizierten Speicherbereichen;
  • - Anzahl von Speicherbereichen, die als Beschreiber-enthal­ tend identifiziert sind;
  • - Anzahl von Speicherbereichen, die als Puffer enthaltend identifiziert sind;
  • - Anzahl von nicht-identifizierten Speicherbereichen;
  • - Anzahl von georteten Beschreibern;
  • - Anzahl von georteten Puffern;
  • - Anzahl von wahrscheinlich zerstörten Puffern;
  • - Anzahl von Speicherzugriffen;
  • - Anzahl von Stößen("Bursts")/Transaktionen.
Das Element 628 wartet dann auf eine Benutzereingabe (über eine Tastatur, ein Zeigegerät oder über andere bekannte Be­ nutzereingabetechniken), um die Verfahren der vorliegenden Erfindung für eine weitere Verarbeitung anzuleiten. Wenn der Benutzer anzeigt, daß die Verarbeitung vollendet ist (eine Ausgangs- oder "Exit"-Anforderung), dann beendet das Element 630 die Verarbeitung der Verfahren der vorliegenden Erfin­ dung. Andernfalls wird die Verarbeitung mit dem Element 632 von Fig. 8 fortgesetzt.
Die Elemente 632 bis 646 von Fig. 8 sind betreibbar, um spe­ zielle Benutzeranforderungen nach einer fortgesetzten Verar­ beitung der Verfahren der vorliegenden Erfindung zu verar­ beiten. Insbesondere sind die Elemente 632 und 634 betreib­ bar, um eine Benutzeranforderung zu verarbeiten, um einen ausgewählten Puffer oder einen ausgewählten Pufferbeschrei­ ber in Rohdatenform anzuzeigen. Das Fenster 502 von Fig. 5, das oben erörtert wurde, ist für eine solche Benutzerange­ forderte Anzeige beispielhaft. Die Elemente 636 und 638 sind auf ähnliche Art und Weise betreibbar, um ein ausgewähltes Paket in einem Protokollspezifischen Format anzuzeigen. Das Fenster 500 von Fig. 5, das oben erörtert wurde, ist für ei­ ne solche Benutzerangeforderte Anzeige in einem Protokoll­ spezifischen Format beispielhaft. Wie oben angemerkt wurde, kann die Anzeige eines einzigen Pakets einen oder mehrere Puffer überspannen. Ein Fachmann wird ohne weiteres erken­ nen, daß die Protokollinformationen, die von den Verfahren der vorliegenden Erfindung gesammelt wurden, zu einem exter­ nen Protokollanalysemodul für eine tiefergehende Analyse übertragen werden können, die speziell auf das Protokoll ausgerichtet ist.
Die Auswahl eines anzuzeigenden Puffers in Verbindung mit den Elementen 632 bis 638, die oben erwähnt wurden, wird durch eine von mehreren bekannten Benutzerschnittstellen­ techniken durchgeführt. Der Benutzer kann beispielsweise das Zeigegerät (z. B. eine Maus) verwenden, um auf den erwünsch­ ten Puffer zu zeigen und zu klicken. Ein Pop-up-Menü er­ scheint dann, das es dem Benutzer erlaubt, eine spezielle Operation in dem ausgewählten Puffer auszuwählen. Alternativ kann der Benutzer einen Auswahlanzeiger (z. B. einen Cursor oder ein "Laufzeichen") bewegen, indem eine Tastenanschlag­ eingabe von der Tastatur verwendet wird. Zusätzlich können, wie es oben erwähnt wurde, Puffer auf dem Computeranzeige­ bildschirm eine textliche Bezeichnung umfassen, um den Puf­ fer zu Auswahlzwecken zu identifizieren. Ein Benutzer wählt dann einen speziellen Puffer aus, indem er den Puffernamen durch Tastaturanschläge als Reaktion auf geeignete Auffor­ derungen eingibt.
Die Elemente 640 und 642 sind als Reaktion auf eine Benut­ zeranforderung, um die Pufferspezifikation oder andere Para­ meter zu modifizieren, betreibbar, welche den Betrieb der Verfahren der vorliegenden Erfindung steuern. Wie es oben angemerkt wurde, können verschiedene Parameter durch den Be­ nutzer konfiguriert werden, um den Betrieb der Verfahren der vorliegenden Erfindung sowohl beim Erkennen/Konstruieren von Puffer- oder Protokollinformationen als auch beim Anzeigen der Ergebnisse dieser Konstruktions/Erkennungs-Verarbeitung zu steuern.
Die Elemente 644 und 646 sind als Reaktion auf eine Benut­ zeranforderung betreibbar, um nach einer speziellen Zielzei­ chenkette in den Puffern zu suchen, die in den erfaßten Zu­ standslogikdaten erkannt wurden. Wie es oben angemerkt wur­ de, kann die Suchzeichenkette (die Zielzeichenkette) in je­ dem beliebigen von mehreren zweckmäßigen Formaten spezifi­ ziert sein, die ein Dezimal-, ein Binär-, ein Hexadezimal- und ein Text-Format (z. B. ASCII-Text) umfassen. Die Zei­ chenkette ist in den Puffern lokalisiert, die durch das obige Pufferkonstruktionsverfahren identifiziert worden sind. Jeder Puffer, in dem die Suchzeigenkette lokalisiert ist, wird auf dem Computeranzeigebildschirm hervorgehoben, um dem Benutzer beim Lokalisieren der Suchzeichenkette zu helfen. Wie es oben angemerkt wurde, sucht die Suchfunktion der Verfahren der vorliegenden Erfindung die wiederkonstru­ ierten Puffer nach der Suchzeichenkette durch, unabhängig von der tatsächlichen Beabstandung (bezüglich des Zeit- oder des Zustandsversatzes) der einzelnen Speicherverweise, wel­ che den wiederkonstruierten Puffer bilden. Ohne die Hilfe der Verfahren der vorliegenden Erfindung würde der Benutzer gezwungen sein, manuell nach der erwünschten Zeichenkette zu suchen. Eine solche manuelle Suche durch die erfaßten Zu­ standslogikdaten ist aufgrund des potentiell nicht-zusammen­ hängenden Wesens der erfaßten Zustände kompliziert, welche ein spezieller Puffer aufweist. Ein Benutzer muß daher durch die erfaßten Zustandslogikdaten manuell durchsuchen, während er darauf achten muß, dazwischenliegende Zustände zu igno­ rieren, die keine Abschnitte des speziellen Puffers (oder eines anderen Speicherbereichs), der gerade durchgesucht wird, aufweisen.
Ein Fachmann wird ohne weiteres erkennen, daß die Elemente 644 und 646 auf ähnliche Art und Weise betreibbar sind, um Pufferbeschreiber oder Speicherbereiche zu suchen, die nicht speziell entweder als Beschreiber oder als Puffer identifi­ ziert sind. Der Benutzer kann das Ziel der Suchoperation durch bekannte Benutzerschnittstellentechniken wählen.
Nach dem Verarbeiten der Benutzeranforderung (durch die Ele­ mente 634, 638, 642 oder 646 oben) wird die Verarbeitung fortgesetzt, indem zu dem Element 628 von Fig. 7 (bei der Bezeichnung "C") schleifenmäßig zurückgesprungen wird, um auf eine weitere Benutzeranforderung zu warten.
Kernpufferkonstruktionsalgorithmus
Fig. 13 liefert zusätzliche Details für den Kernpufferkon­ struktionsalgorithmus, auf den bereits oben bezugnehmend auf die Elemente 1204 und 1208 von Fig. 12 verwiesen wurde. Das Kernpufferkonstruktionsverfahren (der Kernpufferkonstruk­ tionsalgorithmus) wird mit einem Parameter aufgerufen, der die Charakteristika des zu untersuchenden Bereichs (eine Start- und e 26779 00070 552 001000280000000200012000285912666800040 0002019729180 00004 26660ine End-Adresse) anzeigt, wobei ein Parameter anzeigt, ob die Konstruktion der Puffer in diesem Bereich auf Puffer begrenzt sein soll, die an der Startadresse des Bereichs starten.
Im allgemeinen arbeitet der Pufferkonstruktionsalgorithmus durch Starten an einem speziellen erfaßten Speicherzugriff ("C") und durch Initialisieren einer Liste von Zugriffen, die einen Pufferverweis umfassen. Der gegenwärtige Speicher­ zugriff "C" ist der erste Zugriff in der initialisierten Liste. Das Verfahren geht dann weiter, indem es nach dem nächsten erfaßten Zugriff sucht, welcher den nächsthöheren Wert in seinem Adressenfeld hat. Diese Suche nach dem näch­ sten Speicherzugriff hört auf, wenn die erste von drei Be­ dingungen auftritt, d. h. 1) wenn ein solcher Zugriff gefun­ den wird, oder 2) wenn alle Speicherzugriffe in dem Bereich, der untersucht wird, verarbeitet worden sind, ohne daß ein solcher Zugriff lokalisiert worden ist, oder 3) wenn ein Speicherzugriff lokalisiert worden ist, der Charakteristika aufweist, die auf heuristische Art und Weise das Ende eines Puffers von verwandten Speicherzugriffen definieren. Ein solcher Zugriff kann den gleichen Adressenfeldwert wie der Zugriff "C" haben, jedoch mit einem unterschiedlichen Typ (lesen oder schreiben), oder einen unterschiedlichen Daten­ feldwert, und derselbe wird einen Zustandsversatzwert zwi­ schen dem Zustandsversatzwert von "C" und dem von "N" haben (der lokalisierte Speicherzugriff mit dem nächsthöheren er­ warteten Adressenfeldwert).
Der obige Fall 3 ist ein heuristischer Test, der versucht, einen Bruch zwischen mehreren unabhängigen Verweisen auf ei­ nen Puffer in einem Speicherbereich zu erkennen. Fig. 18 zeichnet die durch den obigen Fall 3 beschriebenen Bedingun­ gen. Die X-Achse 1802 von Fig. 18 ist beispielhaft für den Zustandsversatz eines Teilsatzes von erfaßten Speicherzu­ griffen, wobei der Zustandsversatzindexwert von 0 bis 5 reichen kann. Die Y-Achse 100 ist beispielhaft für die Adresse eines Speicherverweises in den erfaßten Zustands­ daten für die Zustandsversätze, welche Adressenwerte von 0 bis 12 in Inkrementen von 4 aufweisen. Dem Zugriff "C" an dem Zustandsversatzindex 1 und mit einem Adressenwert von 4 folgt (in der erwarteten Adressensequenz) der Zugriff "N" an dem Zustandsversatzindex 3 und mit dem nächsten erwarteten Adressenwert von 8 (dem ein Zugriff "A" folgt, usw.). Das Lokalisieren des Zugriffs "X" an dem Zustandsversatzindex 2 mit dem gleichen Adressenwert (4) wie der Zugriff "C" be­ wirkt jedoch, daß die Suche nach dem nächsten Zugriff "N" nicht erfolgreich beendet wird (wie es oben für den Fall 3 beschrieben wurde). Fig. 19 zeigt ein typischeres Auftreten dieses Falls 3, der sich auf typischere erfaßte Daten be­ zieht. Die X-Achse 1902 und die Y-Achse 1900 von Fig. 19 sind wie in der Fig. 18 bezeichnet. Der Pufferverweis, der aus Zugriffen besteht, die mit "1", "B" und "C" bezeichnet sind, ist ein erster vollständiger Pufferverweis (entweder gültig oder zerstört, wie es später bestimmt wird). Der Pufferverweis, der aus den Zugriffen besteht, die mit "2", "b", "c", "D" und "E" bezeichnet sind, ist ein zweiter vollständiger Pufferverweis. Wenn der erste Pufferverweis konstruiert wird, wird die Konstruktion der Liste von Zugriffen, die der Puffer aufweist, bei dem Zugriff "C" aufhören, da der Zugriff "c" zwischen den Zugriffen "C" und "D" ist, und den gleichen Adressenwert wie der Zugriff "C" hat.
Wenn die Suche aufgrund der obigen Bedingung 2 oder 3 beendet wird, beendet das Kernpufferkonstruktionsverfahren der vorliegenden Erfindung den Aufbau des vorliegenden Puffers. Die Liste von Zugriffen, die ein Pufferverweis umfaßt, ist vollendet, und der Puffer, der dadurch darge­ stellt ist, ist neu konstruiert. Wenn die Suche aufgrund der obigen Bedingung 1 aufhört, dann kann der Speicherzugriff, der in der Suche geortet worden ist, einen Speicherzugriff darstellen, der Teil des Pufferverweises ist. Wenn der Spei­ cherzugriff innerhalb des Maximalzwischenraumparameterwerts von der Position des gegenwärtigen Zugriffs "C" (gemessen durch die Anzahl von Zuständen oder durch die Zeit) ist, dann wird der neue Zugriff an die Liste von Zugriffen ange­ hängt, die der Pufferverweis umfaßt. Das Suchverfahren wird dann wie oben wiederholt, wobei der Neuzugriff der gegen­ wärtige Zugriff ("C") wird, und wobei nach dem nächsten Zugriff in der Sequenz gesucht wird. Schließlich wird das Suchverfahren unter entweder der obigen Bedingung 2 oder der obigen Bedingung 3 beendet werden. Wenn der neu gefundene Zugriff nicht innerhalb der Zwischenraumparameterbeabstan­ dung von dem gegenwärtigen Zugriff "C" ist, dann wird die Suche beendet, und die Pufferneukonstruktion ist für die gegenwärtige Liste von Zugriffen vollendet.
Das Flußdiagramm von Fig. 13 liefert eine detaillierte Be­ schreibung des Kernpufferkonstruktionsalgorithmus, der oben erörtert wurde. Das Element 1300 von Fig. 13 ist zuerst betreibbar, um eine Variable "C" auf den gegenwärtigen Zu­ griff an dem Beginn des Bereichs, der durch einen durch das Verfahren übergebenen Parameter identifiziert ist, zu set­ zen. Das Element 1302 fügt dann einen Verweis auf den Zu­ griff "C" zu einer Liste von Zuständen hinzu, welcher einen Pufferverweis in den erfaßten Zustandslogikdaten umfassen kann. Das Verfahren springt dann weiter, um weitere Zugriffe zu der Liste hinzuzufügen, bis eine Bedingung erfüllt ist, die das Verfahren (wie oben erwähnt) beendet. Die Elemente 1302 bis 1314 sind daher wiederholt betreibbar, wobei sie Verweise auf Zugriffe zu der Liste hinzufügen, was einen Pufferverweis identifiziert, bis eine Beendungsbedingung ge­ funden ist.
Das Element 1304 ist betreibbar, um eine Variable "N" zu setzen, um auf den nächsten Zugriff in dem Bereich zu ver­ weisen, der durch einen Speicherzugriff auf den nächsten er­ warteten inkrementierten Adressenwert in der sequentiellen Adressenreihenfolge identifiziert ist, und der einen Zu­ standversatzwert aufweist, der größer als der des Zugriffs "C" ist. Es sei angemerkt, daß der Zustandsversatzwert des Zugriffs "C" kleiner als der des Zugriffs "N" ist, welcher wiederum kleiner als der irgendeines anderen Zugriffs auf die gleiche Speicheradresse wie die des Zugriffs "N" ist. Das erwartete Inkrement in der sequentiellen Adresse ist ein konfigurierbarer Parameter, wie es oben angemerkt wurde, um es zu erlauben, daß die Verfahren der vorliegenden Erfindung ohne weiteres an eine Vielzahl von Computerumgebungen ange­ paßt werden können. Das nächste erwartete Adresseninkrement kann beispielsweise 4 oder 8 Byte für erfaßte Zustandslogik­ daten sein, die mit einem PCI-Bus von 32 oder 64 Datenbits verknüpft sind. Das Element 1306 bestimmt dann, ob der näch­ ste Zugriff (durch "N" bezeichnet) in dem Speicherbereich existiert. Wenn das nicht der Fall ist, hört das Verfahren auf, und die Verarbeitung wird mit dem nachfolgend erörter­ ten Element 1316 fortgesetzt. Andernfalls ist das Element 1308 nachfolgend betreibbar, um zu bestimmen, ob die Anzahl von Zuständen zwischen dem Zustandsversatz des Zugriffs "N" und des Zugriffs "C" innerhalb des erwarteten Zwischenraum­ werts ist. Wenn der Zwischenraum zwischen folgenden Adres­ senzuständen zu groß ist, wird dadurch heuristisch bestimmt, daß die Zugriffe zu getrennten Pufferverweisen gehören, wo­ nach die Verarbeitung mit dem nachfolgend erörterten Element 1316 fortgesetzt wird. Der Schwellenwert für den Maximal­ zwischenraum zwischen Zuständen, die aufeinanderfolgende Adressenspeicherverweise in einem einzigen Pufferverweis darstellen, wird als ein Konfigurationsparameter einge­ stellt, wie es oben angemerkt ist. Dies erlaubt es, daß der Zwischenraum, der die Buszeitgebung und die Computerumge­ bung, die getestet wird, anzeigt, an geeignete Werte für eine spezielle Busstruktur oder Computeranwendung abgestimmt wird. Wenn in anderen Worten der Zwischenraum zwischen dem Zugriff "N" und dem Zugriff "C" größer als der maximal erwartete Zwischenraumwert ist, vollendet das Verfahren von Fig. 13 die Konstruktion dieses Puffers, und die Verarbei­ tung wird mit dem Element 1316 fortgesetzt.
Das Element 1310 ist dann betreibbar, um zu bestimmen, ob ein Speicherzugriff "X" existiert, welcher einen Zustand­ versatzindexwert hat, der zwischen dem des Zugriffs "C" und des Zugriffs "N" liegt, und der den gleichen Adressenfeld­ wert wie der Zugriff "C" hat. Die Fig. 18 und 19, die oben erörtert wurden, zeigen eine solche Bedingung. In Fig. 18 ist der Zugriff "X" zwischen den Zugriffen "C" und "N" ange­ ordnet, und hat einen Adressenwert gleich dem Zugriff "C". Auf ähnliche Weise zeigt Fig. 19 einen beispielhaften Zu­ griff "c", der zwischen den Zugriffen "C" und "D" liegt, wo­ bei ein Adressenfeldwert gleich dem Zugriff "C" ist. Wenn ein solcher Zwischenzugriff in dem Speicherbereich existiert und nicht zu dem Zugriff "C" bezüglich des Zugrifftyps und des Datenwerts identisch ist, wird heuristisch bestimmt, daß der nächste Speicherzugriff "N" ein Teil eines anderen Pufferverweises ist. In diesem Fall ist die Konstruktion des Puffers beendet, und die Verarbeitung wird mit dem Element 1316 fortgesetzt. Andernfalls wird die Verarbeitung mit dem Element 1314 fortgesetzt, um den Verweis auf den Zugriff "C" mit dem Verweis auf den Zugriff "N" zu aktualisieren, und um dann die Suche fortzusetzen, indem zu dem Element 1302 schleifenmäßig zurückgesprungen wird, wobei der neue Zugriff zu der Liste von Zugriffen in dem Pufferverweis hinzugefügt wird, und wobei die Suche nach einem weiteren nächsten Zu­ griff wiederholt wird.
Jeder Speicherzugriff, der zu der Liste von Zugriffen in dem Pufferverweis durch den Betrieb des Elements 1302 hinzuge­ fügt worden ist, wird ebenfalls durch dasselbe aus der Liste von Zugriffen, die weiter analysiert werden sollen, ent­ fernt. Sobald ein Speicherzugriff hierdurch als ein Element eines speziellen Pufferverweises erkannt worden ist, wird es nicht länger bei dem Aufbau anderer Pufferverweise in dem Speicherzugriffsbereich berücksichtigt.
Wenn die Tests der Elemente 1306 oder 1310 bestimmen, daß das Ende des Pufferverweises in der Suche geortet worden ist, gibt das Element 1316 die Liste von Speicherzugriffen, welche der Pufferverweis aufweist, zurück. Die Liste von Zugriffen wird dann von den aufrufenden Funktionen verwen­ det, um ferner die Wahrscheinlichkeit zu analysieren, daß ein korrekter Speicherzugriff geortet worden ist. Nachdem ein Pufferverweis durch das oben zusammengefaßte Verfahren neu konstruiert worden ist, wird eine Vielzahl von heuristi­ schen Tests auf den gegenwärtigen Pufferverweis angewendet, um zu bestimmen, ob derselbe wahrscheinlich ein Pufferver­ weis oder ein bestimmter anderer Verweis (wie z. B. ein zer­ störender Verweis auf einen Puffer) ist. Es kann beispiels­ weise ein Test ausgeführt werden, um die Durchschnittsbeab­ standung der erfaßten Zustände zwischen Speicherzugriffen eines scheinbar neu konstruierten Puffers zu bestimmen. Wenn die Durchschnittszustandsbeabstandung außerhalb vorbe­ stimmter (konfigurierbarer) Parameterwerte ist, dann kann der neu konstruierte Puffer wieder "dekonstruiert" werden, indem die Liste von Zugriffen, die der Pufferverweis auf­ weist, zu der Liste von Zugriffen zurückgegeben wird, die zur weiteren Analyse durch nachfolgende Aufrufvorgänge des Pufferkonstruktionsalgorithmus verfügbar sind.
Ein Fachmann wird ohne weiters viele Varianten des oben be­ schriebenen Kernpufferkonstruktionsalgorithmus erkennen, welche den gleichen Grundzweck des Neuaufbauens von Puffer­ verweisen innerhalb von Bereichen verstreuter Speicherver­ weise in erfaßten Zustandslogikdaten erreichen. Die oben erörterten Verfahren können beispielsweise modifiziert wer­ den, um die Puffererkennung zu beschleunigen, indem der Zwi­ schenraum zwischen scheinbar folgenden Speicherzugriffen ignoriert wird. Jeder Speicherzugriff mit einem Adres­ senfeldwert, der höher als der Adressenwert des vorherigen Zugriffs ist, kann zu der Liste der Zugriffe hinzugefügt werden, die den Pufferverweis darstellen. Obwohl eine Beseitigung des Zwischenraumtests die Pufferneukonstruktion beschleunigt, kann dies Genauigkeit bei dem Neuaufbau von Speicherzugriffen opfern, welche in der Tat keine Pufferver­ weise sind. Auf ähnliche Art und Weise wird ein Fachmann er­ kennen, daß die Tests für erwartete Adresseninkremente be­ seitigt werden können. Wenn die Liste von zu analysierenden Zugriffen in einer sortierten Reihenfolge durch Erhöhen des Zustandversatzes gehalten wird, dann kann jeder folgende Zugriff, der die Zustandszwischenraumtestkriterien erfüllt, zu der Liste von Zugriffen hinzugefügt werden, welche scheinbar einen Pufferverweis aufweisen. Die Adressenfeld­ werte jedes Zugriffs können ignoriert werden. Die verringer­ te Genauigkeit einer solchen Heuristik mit gesteigerter Lei­ stung wird in der späteren Erkennung von möglichen Datenzer­ störungsfällen wiedergegeben, welche tatsächlich keine Da­ tenzerstörung darstellen. Die beste gegenwärtig bekannte Art und Weise zum Implementieren der vorliegenden Erfindung um­ faßt daher die zusätzlichen Tests, die oben erörtert wurden, um die Genauigkeit der Pufferneukonstruktion trotz einer ge­ wissen langsameren Geschwindigkeit beim derartigen Durchfüh­ ren zu verbessern.
Beispielhafte Computerbildschirmanzeigen
Die Fig. 4 und 5 sind beispielhafte Computerbildschirmanzei­ gen, welche einen Stil des visuellen Kommunizierens mit dem Benutzer der Analyse vorschlagen, die durch die Verfahren der vorliegenden Erfindung ausgeführt wird. In Fig. 4 zeigt jede Zeile (die in dieser Anmeldung ebenfalls als ein Band auf der Anzeige bezeichnet wird) der Tabelle von Fig. 4 einen Bereich 406 an, der durch Verarbeiten mit dem Element 602 von Fig. 6, welches oben erörtert wurde, geortet worden ist. Die Parameter jedes Bereichs 406 sind in der Zelle am linken Ende der Zeile (des Bands) gezeigt. Die Parameter, die für jeden Bereich 406 angezeigt werden, sind die Be­ reichsstart- und die Bereichsendadresse (typischerweise auf eine geeignete Adressengrenze für das testende System ge­ rundet) und die Länge des Bereichs. Eine ID-Nummer wird jedem Bereich 406 durch die Verfahren der vorliegenden Erfin­ dung zugewiesen, und dieselbe wird ebenfalls in der Zelle ganz links jeder Zeile (jedes Bandes) angezeigt.
Der Rest jeder Zeile (jedes Bandes) in der Tabelle von Fig. 4 enthält Markierer, die jeden Speicherverweis in dem zuge­ ordneten Bereich identifizieren. Die X-Achse der Tabelle von Fig. 4 ist der Versatzindex der angezeigten Zustände, und zwar von links nach recht zunehmend. Wie es in Fig. 4 gezeigt ist, sind 4.000 erfaßte Zustände angezeigt. Die In­ dizes der Zustände, die angezeigt sind, sind entlang des unteren Teils der Tabelle von Fig. 4 als -516094 . . . -512095 angezeigt. Die angezeigten Indizes stimmen mit den Indexwer­ ten überein, die beim Speichern des Logikanalysators von er­ faßten Zuständen in seinem Zustandsspeicher verwendet wer­ den.
Jeder Speicherverweis in einem speziellen Bereich 406 ist durch eine kleine Zeichenmarke gezeigt. Die horizontale Po­ sition der Marke gibt den Indexwert der erfaßten Zustands­ logik, die demselben entspricht, wieder. Die vertikale Posi­ tion der Marke innerhalb der Tabellenzeile (des Bands) für den Bereich 406 gibt die genaue Adresse innerhalb des Be­ reichs wieder (Marken für niedrigere Adressen erscheinen in der Zeile für den Bereich niedriger).
Da alle Zeilen (Bänder), die verwendet werden, um alle Be­ reiche 406 anzuzeigen, gleichmäßig auf der Tabellenanzeige beabstandet sind, erscheinen größere Puffer in der vertika­ len Achse dichter und in der horizontalen Achse aufgeweitet. Dies ist aufgrund der Tatsache der Fall, daß die größeren Puffer mehr Speicherzugriffe in der gleichen vertikalen Menge von Platz auf dem Computeranzeigebildschirm des Benut­ zers im Vergleich zu kleineren Puffern oder Beschreibern aufnehmen müssen. Größere Puffer erscheinen horizontal er­ weitert, und zwar aufgrund der erhöhten Anzahl von erfaßten Logikzuständen, die der Pufferverweisfall aufweist. In Fig. 4 umfaßt der mit 422 in dem Bereich 406 mit der ID-Zahl 3 markierte Puffer etwa 20 (14 hex) Speicherzugriffe (in Bytes). Der mit 424 in dem Bereich 406 mit der ID-Zahl 1 markierte Puffer umfaßt hingegen 80 (50 hex) Speicherzu­ griffe (in Bytes). Der Puffer 424 ist daher horizontal vergrößert und im Vergleich zu dem kleineren Puffer 422 vertikal dichter.
Obwohl die X-Achse der Tabelle von Fig. 4 erfaßte Zustands­ logikindizes wiedergibt und nicht die Zeit im direkten Sinn, ist es immer wahr, daß die erfaßten Zustände, die auf der linken Seite der Tabelle gezeigt sind, dem Auftreten der er­ faßten Zustände auf der rechten Seite der Tabelle von Fig. 4 vorausgehen. Genau wie die Verfahren der vorliegenden Erfin­ dung auf heuristische Art und Weise wahrscheinliche Daten­ zerstörungsereignisse basierend auf den Verstreuungseigen­ schaften von Pufferbeschreiberverweisen und Pufferverweisen erfassen können, helfen die Benutzerinformationen, die dem Benutzer präsentiert werden, und dazu dienen, Pufferverweise und Pufferbeschreiberverweise in dem Zeitbereich hervorzu­ heben, dem Ingenieur dabei, auf schnelle Art und Weise mög­ liche Anomalitäten in den erfaßten Zustandslogikdaten zu entdecken.
Wie es oben erwähnt wurde, ist das Element 608 von Fig. 6 betreibbar, um Pufferbeschreiber mit den speziellen Puffern, auf die sie sich beziehen, zu verknüpfen. Diese Informatio­ nen werden dem Benutzer visuell präsentiert, wie es in Fig. 4 gezeigt ist, und zwar indem ein gerichteter Vektor von dem Pufferbeschreiber zu dem entsprechenden Puffer, auf den sich derselbe bezieht, gezeichnet wird. Zwei Vektoren 408 und 412 sind beispielsweise in Fig. 4 derart gezeigt, daß sie von zwei Beschreibern, die in dem Bereich 406 mit der Nummer 29 gefunden wurden, aus gezeichnet sind und zu der Startadresse ihrer jeweiligen verwiesenen Puffer, d. h. 410 bzw. 414, hin gerichtet sind. Diese visuellen Informationen erlauben es dem Benutzer, die Verknüpfung von Pufferbeschreibern mit Puffern schnell zu betrachten, eine mögliche Datenzerstörung sichtbar zu machen, bei der Daten in einem Puffer oder Beschreiber modifiziert werden, bevor sie korrekt verwendet werden, und die Zeitverzögerungen (gemessen in der Anzahl von Zuständen entlang der X-Achse) zwischen Verweisen auf Puffer, die einer Einstellung von Beschreibern folgen, usw. visuell einzuschätzen.
Ein vertikaler Markierer 416 kann von dem Benutzer unter Verwendung bekannter Eingabetechniken mit einer Tastatur oder einem Zeigegerät positioniert werden. Der vertikale Markierer kann verwendet werden, um einen speziellen Ab­ schnitt der Tabelle von Fig. 4 durch Positionieren des ver­ tikalen Markierers an einem speziellen Zustandsindex für ei­ ne detaillierte Analyse auszuwählen. Nach einer derartigen Auswahl eines speziellen Zustands der Tabelle von Fig. 4 können Standardbenutzerschnittstellentechniken verwendet werden, um die erfaßten Zustandsdaten in der visuellen Nach­ barschaft des vertikalen Markierers zu untersuchen. Durch Klicken des Zeigegeräts an der vertikalen Markierposition wird ein Pop-up-Menü angezeigt, welches es dem Benutzer er­ laubt, eine erwünschte Option zum Betrachten der ausgewähl­ ten Zustandslogikdaten auszuwählen. Die erfaßten Zustands­ logikdaten in dem Bereich, der die vertikale Markiererposi­ tion umgibt, können angezeigt werden, wie es oben erwähnt wurde, und zwar auf irgendeine von verschiedenen Formaten in einem getrennten Fenster. Durch Auswählen und Anzeigen meh­ rerer solcher Positionen kann der Benutzer ohne weiteres Da­ ten von unterschiedlichen Abschnitten der erfaßten Zustands­ logikdaten betrachten und korrelieren.
Wenn die erfaßten Zustandslogikdaten in dem vorgegebenen Format des Computeranzeigebildschirms zu dicht präsentiert sind, kann der Benutzer bekannte Benutzerschnittstellentech­ niken verwenden, um auszuwählen, daß eine Region der Anzeige in einem gezoomten Fenster betrachtet wird. Der Benutzer wählt einen rechteckigen Abschnitt der Speicherbereiche auf dem Anzeigebildschirm und klickt das Zeigegerät, um ein Pop-up-Menü anzuzeigen. Der Benutzer kann dann eine Zoom­ option auswählen, um die ausgewählte Region des Computeranzeigebildschirms mit zusätzlichen Details anzuzeigen. Ein neues Fenster wird mit einer Tabelle angezeigt, die analog zu der in Fig. 4 angezeigten ist, die jedoch zusätzliche De­ tails für jeden Speicherzugriff aufweist (einschließlich beispielsweise von Adressen- und Datenwerten für jeden Zu­ griff). Ferner hebt eine gezoomte Fensteranzeige Zeiger in farbigem Text und farbiger Graphik hervor. Die erfaßten Zu­ standslogikdaten, welche innerhalb der ausgewählten recht­ eckigen Region angezeigt werden, werden in der Tabelle des neuen Fensters gezeigt.
Parameter, die verwendet werden, um heuristisch Puffer und Pufferbeschreiber in den Bereichen der erfaßten Zustands­ logikdaten zu identifizieren, können von dem Benutzer durch den Eintrag von Werten in das Fenster "THRESH" 400 (THRESH = threshold = Schwelle) verändert werden. Der Wert in dem "THRESH"-Fenster 400 bestimmt den Schwellenwert zum Identi­ fizieren eines Puffers gegenüber einem Pufferbeschreiber in den Bereichen, die in den erfaßten Zustandslogikdaten geor­ tet wurden, und zwar basierend auf der Länge der zusammen­ hängenden Speicherzugriffe.
Wie es oben bezugnehmend auf das Element 634 von Fig. 7 er­ örtert wurde, kann der Benutzer eine Suchzeichenkette spezi­ fizieren, die auf alle identifizierten Puffer angewendet wird. Alle Puffer, die den Suchzeichenkettenwert enthalten, der von dem Benutzer in dem Fenster "SUCHEN" 418 eingegeben wird, werden auf dem Anzeigebildschirm hervorgehoben. Puf­ fer, die die von dem Benutzer ausgewählte Suchzeichenkette enthalten, werden durch eine visuelle Markierung auf dem An­ zeigebildschirm neben dem Puffer hervorgehoben. Ein getrenn­ tes Dialogfenster auf dem Computeranzeigebildschirm zeigt alle Puffer, die die Suchzeichenkette des Benutzers enthal­ ten, sowie einen Versatz innerhalb des Puffers, an dem die Suchzeichenkette geortet wurde. Wie es oben erwähnt wurde, kann der Benutzer eine Suchzeichenkette in textlicher, in binärer oder in hexadezimaler Form eingeben. Standardsuch­ techniken, die die Verwendung von Stellvertreterzeichen- Platzhaltern in der Suchzeichenkette umfassen, sind bekannte Erweiterungen für solche Suchmerkmale. Wie es ebenfalls oben angemerkt wurde, wird die Suchzeichenkette auf die identifi­ zierten Puffer und nicht notwendigerweise auf sequentielle Zustände der erfaßten Zustandslogikdaten angewendet. Dieses Suchmerkmal macht daher den Bedarf überflüssig, daß der In­ genieur eine Sequenz von erfaßten Zuständen manuell durch­ sucht, um Datenwerte in bestimmten Zuständen zu untersuchen, die einem speziellen Puffer zugeordnet sind, während dazwi­ schenliegende nicht-verwandte Zustände ignoriert werden, und daß der gleiche Prozeß für weitere Puffer wiederholt wird.
Wie es ebenfalls in Fig. 4 gezeigt ist, ist jeder identifi­ zierte Puffer mit einer einzigartigen Textbezeichnung, wie z. B. "BUFnn" (BUF = Buffer = Puffer), versehen. Diese Text­ bezeichnung wird verwendet, um ein Anzeigefenster zuzuord­ nen, das verwendet wird, um den Dateninhalt des ausgewählten Puffers zu betrachten, wie es oben bezugnehmend auf das Ele­ ment 614 von Fig. 6 beschrieben wurde. Der Benutzer kann ei­ nen speziellen Puffer durch eine von mehreren bekannten Be­ nutzerschnittstellentechniken auswählen und die Verfahren der vorliegenden Erfindung anweisen, um den Dateninhalt des­ selben in einem neuen Fenster anzuzeigen. Wie es oben erör­ tert wurde, kann der Benutzer anfordern, daß die Anzeige der Daten des Puffers in einer Textform ist (z. B. hexadezimaler Ablagemodus oder "Dump"-Modus, ASCII oder EBCDIC). Die ein­ zigartige Textbezeichnung, die für jeden identifizierten Puffer in der Anzeige von Fig. 4 verwendet wird, wird dann verwendet, um das neue Fenster zu bezeichnen, das verwendet wird, um den Dateninhalt des Puffers anzuzeigen.
Fig. 5 zeigt eine beispielhafte Bildschirmanzeige mit zwei neuen Fenstern 500 und 502, die den Dateninhalt ausgewählter Puffer zeigen. Das Fenster 502 zeigt die rohen Hexadezimal­ ausdrücke des Dateninhalts des Puffers, der als "BUF35" in Fig. 4 bezeichnet ist, an. Der Titelbalkenabschnitt der neu­ en Fenster gibt die einzigartige Bezeichnung wieder, die für den entsprechenden Puffer der darunterliegenden angezeigten Tabelle (wie in Fig. 4) verwendet wurde. Das Fenster 500 zeigt den Inhalt eines Pakets in einem protokollspezifischen Format an. Wie es in Fig. 5 gezeigt ist, ist ein Token- Ring-LAN-Protokoll angezeigt. Ein Fachmann wird ohne weite­ res die Anwendbarkeit der Verfahren der vorliegenden Erfin­ dung auf irgendeines von mehreren Protokollstandards erken­ nen, bei denen eine intelligente I/O-Schnittstellenkarte in Verbindung mit der CPU über ein Schema mit gemeinsam verwen­ detem Speicher oder "Shared Memory" verwendet wird. LAN-Pro­ tokolle sind lediglich eine beispielhafte Anwendung der Ver­ fahren der vorliegenden Erfindung.

Claims (18)

1. Computer-ausführbares Verfahren zum Anzeigen von Zu­ standslogikdaten, die durch einen Logikanalysator er­ halten werden, der mit einem elektronischen Verbin­ dungsbus verbunden ist, über den Speicherzugriffe übertragen werden, wobei jeder Speicherzugriff einen Adressenwert umfaßt, mit folgenden Schritten:
Korrelieren einer Mehrzahl von Datenstrukturen mit Speicherzugriffen in den Zustandslogikdaten (606- 610), die durch den Logikanalysator erhalten werden, wobei Speicherzugriffe als benachbarte Speicherzu­ griffe identifiziert werden, wenn ihre jeweiligen Adressenwerte in einer vorbestimmten Sequenz sind (1204, 1208); und
Anzeigen der Mehrzahl von Datenstrukturen in Bändern auf einem Computeranzeigebildschirm (614-626).
2. Verfahren gemäß Anspruch 1, bei dem jede Dateneinheit der Zustandslogikdaten einen Lesen/Schreiben-Attribut­ wert umfaßt, wobei der Schritt des Korrelierens ferner folgenden Schritt aufweist:
Identifizieren benachbarter Speicherzugriffe in den Zustandslogikdaten mit einem identischen Lesen/Schrei­ ben-Attributwert (1310).
3. Verfahren gemäß Anspruch 2, bei dem der Schritt des Anzeigens ferner folgenden Schritt aufweist:
Anzeigen von Datenstrukturen der Mehrzahl von Daten­ strukturen mit einem Lesen/Schreiben-Attributwert, der eine Leseoperation auf eine Art und Weise anzeigt, die von der Anzeige von Datenstrukturen der Mehrzahl von Datenstrukturen unterscheidbar ist, die einen Lesen/­ Schreiben-Attributwert aufweisen, der eine Schreiben- Operation anzeigt (614).
4. Verfahren gemäß Anspruch 2, bei dem der Schritt des Anzeigens ferner folgende Schritte aufweist:
Anzeigen von Datenstrukturen der Mehrzahl von Daten­ strukturen mit einem Lesen/Schreiben-Attributwert, die eine Lesen-Operation anzeigen, unter Verwendung einer ersten Anzeigefarbe auf dem Computeranzeigebildschirm (614); und
Anzeigen von Datenstrukturen der Mehrzahl von Daten­ strukturen mit einem Lesen/Schreiben-Attributwert, die eine Schreiben-Operation anzeigen, unter Verwendung einer zweiten Anzeigefarbe auf dem Computeranzeige­ bildschirm (614).
5. Verfahren gemäß einem der vorhergehenden Ansprüche, bei dem der Schritt des Korrelierens folgende Schritte aufweist:
Identifizieren von Puffern in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbar­ ten Zugriffen der Speicherzugriffe in den Zustandslo­ gikdaten (610); und
Identifizieren von Pufferbeschreibern in den Speicher­ zugriffen in den Zustandslogikdaten als eine Anzahl von Speicherzugriffen der Speicherzugriffe in den Zu­ standslogikdaten, die einen Zeiger auf einen der Mehr­ zahl von Datenstrukturen umfassen (608).
6. Verfahren gemäß Anspruch 5, bei dem der Schritt des Anzeigens ferner folgende Schritte aufweist:
graphisches Anzeigen der identifizierten Puffer auf dem Computeranzeigebildschirm (614); und
graphisches Anzeigen der identifizierten Pufferbe­ schreiber auf dem Computeranzeigebildschirm auf eine Art und Weise, die von der Anzeige der identifizierten Puffer (616) unterscheidbar ist.
7. Verfahren gemäß Anspruch 6, bei dem der Schritt des Anzeigens ferner folgende Schritte aufweist:
Bestimmen, auf welchen der identifizierten Puffer von jedem der identifizierten Pufferbeschreiber verwiesen wird (608); und
Anzeigen von Anzeichen eines Verweises von jedem der identifizierten Pufferbeschreiber auf einen entspre­ chenden der identifizierten Puffer (616, 408, 412).
8. Verfahren gemäß Anspruch 6 oder 7, das folgenden Schritt aufweist:
Erfassen von wahrscheinlichen Datenzerstörungsfehlern in Zeitstreuungscharakteristika von Verweisen auf identifizierte Puffer und identifizierte Pufferbe­ schreiber (618).
9. Verfahren gemäß Anspruch 8, bei dem der Schritt des Anzeigens ferner folgenden Schritt aufweist:
Anzeigen von identifizierten Puffern und identifizier­ ten Pufferbeschreibern, die den erfaßten wahrscheinli­ chen Datenzerstörungsfehlern entsprechen, auf eine Art und Weise, die von anderen der identifizierten Puffer und anderen der identifizierten Pufferbeschreiber un­ terscheidbar ist (618).
10. Verfahren gemäß einem der Ansprüche 1 bis 4, bei dem der Schritt des Korrelierens folgende Schritte auf­ weist:
Identifizieren zumindest eines Puffers in den Zustands­ logikdaten, wobei der zumindest eine Puffer Zustände aufweist, die in den Zustandslogikdaten gestreut sind, die eine Sequenz von Speicherzugriffen auf benachbarte Speicheradressen darstellen (606-610).
11. Verfahren gemäß Anspruch 10, bei dem der Schritt des Korrelierens folgende Schritte aufweist:
Identifizieren des zumindest einen Puffers in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbarten der Speicherzugriffe in den Zustandslogikdaten (606, 610); und
Identifizieren zumindest eines Pufferbeschreibers in den Speicherzugriffen in den Zustandslogikdaten als eine Anzahl von benachbarten der Speicherzugriffe in den Zustandslogikdaten, der einen Zeiger auf einen des zumindest einen Puffers (606, 608) umfaßt.
12. Verfahren gemäß Anspruch 11, bei dem der Schritt des Anzeigens ferner folgende Schritte aufweist:
graphisches Anzeigen des zumindest einen Puffers auf dem Computeranzeigebildschirm (614, 422, 424); und
graphisches Anzeigen des zumindest einen Pufferbe­ schreibers auf dem Computeranzeigebildschirm auf eine Art und Weise, die von der Anzeige der identifizierten Puffer unterscheidbar ist (616, 408, 412).
13. Verfahren gemäß Anspruch 12, bei dem der Schritt des Anzeigens ferner folgende Schritte aufweist:
Bestimmen, auf welchen des zumindest einen Puffers von dem zumindest einen Pufferbeschreiber verwiesen wird (608); und
Anzeigen von Anzeichen eines Verweises von jedem des zumindest einen Pufferbeschreibers auf einen entspre­ chenden des zumindest einen Puffers (616, 408, 412).
14. Verfahren gemäß Anspruch 12 oder 13, das ferner fol­ genden Schritt aufweist:
Erfassen von wahrscheinlichen Datenzerstörungsfehlern in Zeitstreuungscharakteristika der Verweise auf den zumindest einen Puffer und den zumindest einen Puffer­ beschreiber (618).
15. Verfahren gemäß Anspruch 14, bei dem der Schritt des Anzeigens ferner folgenden Schritt aufweist:
Anzeigen des zumindest einen Puffers und des zumindest einen Pufferbeschreibers, der den erfaßten wahrschein­ lichen Datenzerstörungsfehlern entspricht, auf eine Art und Weise, die von anderen des zumindest einen Puffers und anderen des zumindest einen Pufferbe­ schreibers (618) unterscheidbar ist.
16. Verfahren gemäß einem der Ansprüche 1 bis 15, das fer­ ner folgenden Schritt aufweist:
textliches Anzeigen von Daten, die in einer ausgewähl­ ten der Mehrzahl von Datenstrukturen enthalten sind, als Reaktion auf eine Benutzeranforderung (632, 634, 502).
17. Verfahren gemäß einem der Ansprüche 1 bis 16, das fer­ ner folgenden Schritt aufweist:
textliches Anzeigen von Kommunikationsprotokolldaten, die in zumindest einer ausgewählten Datenstruktur der Mehrzahl von Datenstrukturen enthalten sind, als Reak­ tion auf eine Benutzeranforderung (636, 638, 500).
18. Verfahren gemäß einem der Ansprüche 1 bis 17, das fer­ ner folgenden Schritt aufweist:
Durchsuchen von Daten, die in der Mehrzahl von Daten­ strukturen enthalten sind, nach einer spezifizierten Datensequenz als Reaktion auf eine Benutzeranforderung (644, 646).
DE19729180A 1996-09-03 1997-07-08 Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen Expired - Fee Related DE19729180C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/708,142 US5737520A (en) 1996-09-03 1996-09-03 Method and apparatus for correlating logic analyzer state capture data with associated application data structures

Publications (2)

Publication Number Publication Date
DE19729180A1 DE19729180A1 (de) 1998-03-12
DE19729180C2 true DE19729180C2 (de) 2002-05-02

Family

ID=24844544

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19729180A Expired - Fee Related DE19729180C2 (de) 1996-09-03 1997-07-08 Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen

Country Status (4)

Country Link
US (1) US5737520A (de)
JP (1) JPH10105427A (de)
DE (1) DE19729180C2 (de)
GB (1) GB2317247B (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5905905A (en) * 1997-08-05 1999-05-18 Adaptec, Inc. System for copying IOBS from FIFO into I/O adapter, writing data completed IOB, and invalidating completed IOB in FIFO for reuse of FIFO
US6148420A (en) * 1997-10-17 2000-11-14 Agilent Technologies Method and apparatus for analyzing serial data
US6311327B1 (en) * 1998-03-02 2001-10-30 Applied Microsystems Corp. Method and apparatus for analyzing software in a language-independent manner
US6687865B1 (en) 1998-03-25 2004-02-03 On-Chip Technologies, Inc. On-chip service processor for test and debug of integrated circuits
US6904519B2 (en) * 1998-06-12 2005-06-07 Microsoft Corporation Method and computer program product for offloading processing tasks from software to hardware
US6141705A (en) * 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
US6182280B1 (en) 1998-07-10 2001-01-30 Agilent Technologies Inverse assembler with reduced signal requirements with a user supplied memory map
US6110225A (en) * 1998-07-10 2000-08-29 Agilent Technologies Inverse assembler with reduced signal requirements using a trace listing
US6175955B1 (en) * 1998-07-31 2001-01-16 Agilent Technologies Method for retrieving selected data values in a processor using data visibility macros
US6345295B1 (en) 1999-01-22 2002-02-05 International Business Machines Corporation Conducting traces in a computer system attachment network
US6351845B1 (en) * 1999-02-04 2002-02-26 Sun Microsystems, Inc. Methods, apparatus, and articles of manufacture for analyzing memory use
US7080319B1 (en) 1999-09-29 2006-07-18 Lucent Technologies Inc. Technology to translate non-text display generation data representing an indicator into text variables
US6678803B2 (en) * 1999-11-03 2004-01-13 Micron Technology, Inc. Method and device to use memory access request tags
US6973417B1 (en) 1999-11-05 2005-12-06 Metrowerks Corporation Method and system for simulating execution of a target program in a simulated target system
US6691249B1 (en) * 2000-03-22 2004-02-10 Agilent Technologies, Inc. Probabilistic diagnosis, in particular for embedded and remote applications
US6745351B1 (en) * 2000-05-26 2004-06-01 I-Tech Corporation Indexing system for protocol analyzers
US7039834B1 (en) * 2000-12-21 2006-05-02 Unisys Corporation High speed processor interconnect tracing compaction using selectable triggers
EP2469850A3 (de) 2001-02-21 2013-07-10 United Video Properties, Inc. Systeme und Verfahren für interaktive Programmführer mit persönlichen Videoaufzeichnungsfunktionen
US20020174387A1 (en) * 2001-03-29 2002-11-21 Vance Lohoff Stealth module for bus data analyzer
US6954746B1 (en) * 2001-06-01 2005-10-11 Oracle International Corporation Block corruption analysis and fixing tool
US20030023901A1 (en) * 2001-07-27 2003-01-30 Hack Stephen Patrick Method for analyzing serial bus traffic for debugging systems
US6883117B2 (en) * 2001-11-15 2005-04-19 International Business Machines Corporation Bus trace analysis a posteriori
WO2003102241A1 (en) * 2002-05-29 2003-12-11 Autogenomics, Inc. Integrated micro array system and methods therefor
US8260906B1 (en) 2002-07-26 2012-09-04 Mcafee, Inc. System and method for heuristic determination of network protocols
US7219333B2 (en) * 2002-11-22 2007-05-15 Texas Instruments Incorporated Maintaining coherent synchronization between data streams on detection of overflow
US6879939B1 (en) * 2002-12-27 2005-04-12 Unisys Corporation Control of distribution of input/output operations during system testing
US7370082B2 (en) * 2003-05-09 2008-05-06 Microsoft Corporation Remote invalidation of pre-shared RDMA key
US7095416B1 (en) * 2003-09-22 2006-08-22 Microsoft Corporation Facilitating performance analysis for processing
US6957162B2 (en) * 2003-11-10 2005-10-18 Lsi Logic Corporation Low-impact analyzer interface
US7356455B2 (en) 2003-11-18 2008-04-08 Quickturn Design Systems, Inc. Optimized interface for simulation and visualization data transfer between an emulation system and a simulator
US7191257B2 (en) * 2003-12-22 2007-03-13 National Instruments Corp. System and method for real-time processing of nondeterministic captured data events
US7200691B2 (en) * 2003-12-22 2007-04-03 National Instruments Corp. System and method for efficient DMA transfer and buffering of captured data events from a nondeterministic data bus
US7111092B1 (en) * 2004-04-16 2006-09-19 Cisco Technology, Inc. Buffer management technique for a hypertransport data path protocol
GB0412104D0 (en) * 2004-05-29 2004-06-30 Ibm Apparatus method and program for recording diagnostic trace information
US7738399B2 (en) * 2004-06-01 2010-06-15 Quickturn Design Systems Inc. System and method for identifying target systems
US7353437B2 (en) * 2004-10-29 2008-04-01 Micron Technology, Inc. System and method for testing a memory for a memory failure exhibited by a failing memory
US20060161733A1 (en) * 2005-01-19 2006-07-20 Emulex Design & Manufacturing Corporation Host buffer queues
US7992049B2 (en) * 2005-05-16 2011-08-02 Texas Instruments Incorporated Monitoring of memory and external events
US8001427B2 (en) * 2005-05-16 2011-08-16 Texas Instruments Incorporated Method and system of indexing into trace data based on entries in a log buffer
US7987393B2 (en) * 2005-05-16 2011-07-26 Texas Instruments Incorporated Determining operating context of an executed instruction
US7774652B2 (en) * 2006-09-19 2010-08-10 Hewlett-Packard Development Company, L.P. Circuitry and method to detect conditions of data
US8370405B2 (en) * 2009-01-19 2013-02-05 International Business Machines Corporation Variable-length record, corruption recovery apparatus, system, and method
JP5542398B2 (ja) * 2009-09-30 2014-07-09 株式会社日立製作所 障害の根本原因解析結果表示方法、装置、及びシステム
US8589730B2 (en) * 2010-08-31 2013-11-19 Apple Inc. Handling errors during device bootup from a non-volatile memory
US8706955B2 (en) 2011-07-01 2014-04-22 Apple Inc. Booting a memory device from a host
US9063884B2 (en) * 2012-10-23 2015-06-23 Hewlett-Packard Development Company, L.P. Analysis of health indicators of a system
CN108768730B (zh) * 2018-05-31 2022-05-31 北京百度网讯科技有限公司 用于操作智能网卡的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3218277A1 (de) * 1982-05-14 1983-11-17 Siemens AG, 1000 Berlin und 8000 München Schaltungsanordnung fuer fernmeldevermittlungsanlagen, insbesondere fernsprechvermittlungsanlagen, mit einer abwicklung der vermittlungsschaltvorgaenge dienenden multirechnersystemen
US5408650A (en) * 1993-06-29 1995-04-18 Digital Equipment Corporation Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3826908A (en) * 1973-02-05 1974-07-30 Paradyne Corp Data telecommunications analyzer
US4517671A (en) * 1982-11-30 1985-05-14 Lewis James D Apparatus for operational analysis of computers
US4641348A (en) * 1983-11-09 1987-02-03 Hewlett-Packard Company Timing or logic state analyzer with automatic qualified inferential marking and post processing of captured trace data
US4696004A (en) * 1984-05-28 1987-09-22 Takeda Riken Kogyo Kabushikikaisha Logic analyzer
US4965765A (en) * 1986-05-16 1990-10-23 International Business Machines Corp. Distinguishing nested structures by color
US5282213A (en) * 1991-01-02 1994-01-25 Compaq Computer Corporation Computer-based logic analyzer timing and analysis system
US5428766A (en) * 1992-12-01 1995-06-27 Digital Equipment Corporation Error detection scheme in a multiprocessor environment
US5613063A (en) * 1994-07-01 1997-03-18 Digital Equipment Corporation Method and apparatus for checking validity of memory operations
US6044477A (en) * 1996-01-31 2000-03-28 International Business Machines Corporation System and method for auditing buffer usage in a data processing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3218277A1 (de) * 1982-05-14 1983-11-17 Siemens AG, 1000 Berlin und 8000 München Schaltungsanordnung fuer fernmeldevermittlungsanlagen, insbesondere fernsprechvermittlungsanlagen, mit einer abwicklung der vermittlungsschaltvorgaenge dienenden multirechnersystemen
US5408650A (en) * 1993-06-29 1995-04-18 Digital Equipment Corporation Memory analysis system for dynamically displaying memory allocation and de-allocation events associated with an application program

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
BECKERS, Frank, Von Pontius zu Pilatus, in: Elektronik 7/1996, S. 92-95 *
IBM Technical Disclosure Bulletin, Vol. 38, No. 3, März 1995, S. 67-69 *

Also Published As

Publication number Publication date
JPH10105427A (ja) 1998-04-24
US5737520A (en) 1998-04-07
GB2317247A (en) 1998-03-18
GB9717760D0 (en) 1997-10-29
DE19729180A1 (de) 1998-03-12
GB2317247B (en) 2001-01-17

Similar Documents

Publication Publication Date Title
DE19729180C2 (de) Verfahren zum Korrelieren von Logikanalysatorzustandserfassungsdaten mit zugeordneten Anwendungsdatenstrukturen
DE69911266T2 (de) Computerprogrammprofiler
DE2914106C2 (de) Prüfgerät zum Prüfen gedruckter Schaltungskarten
DE2914128C2 (de) Verfahren zur Fehlerortung in einer digitalen Schaltung und Prüfgerät zur Durchführung des Verfahrens
DE4108590C2 (de) Verfahren zum Benchmark-Testen der Arbeitsgeschwindigkeit eines Computersystem
US6226407B1 (en) Method and apparatus for analyzing computer screens
DE19747396C2 (de) Verfahren und Anordnung zur Schaffung einer Ferndiagnose für ein elektronisches System über ein Netz
US5847972A (en) Method and apparatus for graphically analzying a log-file
DE10063662B4 (de) Logikanalysator mit gemischter textlicher und graphischer Trigger-Spezifikation
DE2515297A1 (de) Pruefsystem fuer logische netzwerke mit simulatororientiertem fehlerpruefgenerator
DE112005001790B4 (de) Programmerstellungseinrichtung für eine programmierbare Steuervorrichtung, Programmerstellungsverfahren für eine programmierbare Steuervorrichtung und Aufzeichnungsmedium mit darauf aufgezeichnetem Programm
DE102005025744A1 (de) Verfahren und Vorrichtung zum automatisierten Testaufbau
DE10204657A1 (de) Nachrichtenanalyseeinrichtung und Verfahren zum Anzeigen von Nachrichten
DE102012216841A1 (de) Verfahren und Vorrichtung zur Durchführung von Sicherheitstests hinsichtlich von Protokollimplementierungen
DE112010003948T5 (de) Auswerten von Objekten einer Grafischen Benutzeroberfläche zur Überprüfung von Standards
DE112008004025T5 (de) Analysieren von Ereignissen
US8780098B1 (en) Viewer for multi-dimensional data from a test environment
DE10047612A1 (de) Logikanalysator mit durch ein Signalformexemplar definierter Trigger-Spezifikation
EP0104635A2 (de) Verfahren und Anordnung zum Prüfen eines digitalen Rechners
DE112014001997T5 (de) Kennzeichnen von Client-Zuständen
DE112011100168B4 (de) Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung
DE10038499A1 (de) Verfahren und System für die verbesserte Entwicklungsprüfung mittels angepasster Ablaufverfolgung
DE69814750T2 (de) Logikanalysator zur Erkennung der Übereinstimmung einer Abtastungsprobe mit einem Quellcodebefehl
DE102004008215A1 (de) Vorrichtung und Verfahren zur Taktwiedergewinnung und Augendiagrammerzeugung
DE10255142A1 (de) Diagnose von Datenpaketübertragungs-Fehlern unter Verwendung von Einschränkungen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8127 New person/name/address of the applicant

Owner name: AGILENT TECHNOLOGIES, INC. (N.D.GES.D.STAATES DELA

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee