DE3854546T2 - Verfahren und Gerät zur Programmablaufmessung. - Google Patents

Verfahren und Gerät zur Programmablaufmessung.

Info

Publication number
DE3854546T2
DE3854546T2 DE3854546T DE3854546T DE3854546T2 DE 3854546 T2 DE3854546 T2 DE 3854546T2 DE 3854546 T DE3854546 T DE 3854546T DE 3854546 T DE3854546 T DE 3854546T DE 3854546 T2 DE3854546 T2 DE 3854546T2
Authority
DE
Germany
Prior art keywords
instruction
program
executed
causing
interrupt
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
DE3854546T
Other languages
English (en)
Other versions
DE3854546D1 (de
Inventor
Bruce William Bailey
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.)
Tandem Computers Inc
Original Assignee
Tandem Computers 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 Tandem Computers Inc filed Critical Tandem Computers Inc
Publication of DE3854546D1 publication Critical patent/DE3854546D1/de
Application granted granted Critical
Publication of DE3854546T2 publication Critical patent/DE3854546T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/3668Testing of software
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • G06F11/362Debugging of software
    • G06F11/3644Debugging of software by instrumenting at runtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

    Hinweis betreffend urheberrechtlich geschütztem Material
  • Ein Teil der Offenbarung dieser Patentunterlagen enthält Material, das einem Urheberrechtsschutz unterliegt. Der Urheberrechtsinhaber hat keine Einwände gegen die Faksimilereproduktion der Patentunterlagen oder der Patentoffenbarung, wie sie in der Akte oder den Aufzeichnungen des Patent- und Warenzeichenamts erscheinen/-t, durch jederman, behält sich aber im übrigen trotz allem alle Urheberrechte vor.
  • Hintergrund der Erfindung
  • Diese Erfindung betrifft Computersoftware-Testwerkzeuge und betrifft genauer ein Verfahren und eine Vorrichtung zum Bestimmen, welche Programmanweisungen ausgeführt wurden.
  • Ein wichtiger Aspekt der Software-Qualitätssicherung ist der Umfang des Testens. Ohne die Unterstützung spezieller Werkzeuge ist es schwierig, wenn nicht unmöglich, die "Abdeckung" genau zu bestimmen, d.h. welche Programmbefehle ausgeführt sind, wenn Testfälle laufen gelassen werden. Es ist daher schwierig zu wissen, welche Testfälle laufen gelassen werden sollen oder wann die Testfallentwicklung zu stoppen ist.
  • Beim Stand der Technik gibt es zwei grundsätzliche Arten von Werkzeugen zum Messen des Umfangs von Testfällen. Die erste Art sind Werkzeuge, die Vorprozessoren verwenden, um einen Quellcode zu modifizieren, bevor er kompiliert wird. Prozeduraufrufe werden am Anfang von Programmblöcken eingefügt, um nachzuvollziehen, ob ein Block ausgeführt wurde. Bei diesem Versuch gibt es mehrere Nachteile. Diese Werkzeuge sind sprachenspezifisch, das heißt, daß die Vorprozessoren für die Syntax der Quellensprache maßgeschneidert sein müssen. Die Größe des Objektcodes wird durch die Prozeduraufrufe verändert, was die Ausführungscharakteristika das Programms ändern kann. Programme müssen für eine Messung vorverarbeitet und rekompiliert werden, und dann zur Produktionsverwendung oder Produktabgabe wieder gespeichert oder rekompiliert werden. Die Verwendung von Vorprozessoren erfordert nicht nur einen extra Schritt, sie macht diese Werkzeuge auch unpraktisch zum Messen eines Betriebssystemcodes und zeitkritischer Programme.
  • Die zweite Art eines Abdeckungsmeßwerkzeuges beim Stand der Technik verwendet Probentechniken zum periodischen Lesen des Programmzählers und Ansammeln von Statistiken darüber, wieviel Zeit in vorgegebenen Spelcheradressenbereichen verbracht wird. Es werden Histogramme entwickelt, die auf das Ladespeicherabbild des Programms abgestimmt werden können. Diese Werkzeuge sind nützlich zum Auswerten der Programmleistung, da sie Probeentnahmen verwenden, können sie jedoch nicht verwendet werden, um zu bestimmen, welche Befehle nicht ausgeführt wurden.
  • Was erforderlich ist, ist ein wirkliches Abdeckungsmeßwerkzeug, das keine Quellcode-Vorverarbeitung erfordert, bei jeder Art von Programm verwendet werden kann und keine Modifikation existierender Programme oder Testreihen erfordert.
  • Das IBM Technical Disclosure Bulletin Vol. 25, Nr.6, November 1982, Seite 3054, "Determination of Code Coverage" von D. J. Bradley et. al. offenbart ein Verfahren zum Bestimmen einer Codeabdeckung wie folgt:
  • 1. Finde und markiere bedingte Befehle.
  • A. Identifiziere jene Bereiche, die für eine Abdeckungsanalyse markiert werden sollen.
  • B. Untersuche die identifizierten Sektionen des Codes und ersetze die bedingten Befehle mit einem Aufrufbefehl zu einem speziellen Treiber.
  • C. Erstelle eine Tabelle, die Adressen und Originaloperationscodes der markierten bedingten Befehle enthält.
  • 2. Führe Testfälle aus und bestimme die Abdeckung.
  • A. Teste Fälle, die zum Ausführen aller Teile des Codes gestaltet sind.
  • B. Wenn der spezielle Treiber aufgerufen wird (von einem ersetzten bedingten Befehl), suche die Tabelle von 1C, um den Befehl zu bestimmen, der ausgeführt werden sollte.
  • C. Simuliere den Originalbefehl durch den speziellen Treiber.
  • D. Aktualisiere die Tabelle, um zu zeigen, welche Richtung der Verzweigung genommen wurde.
  • E. Wenn beide Richtungen der Verzweigung genommen wurden, ersetze den Aufruf zum speziellen Treiber durch den Originaloperationscode, um die obigen und die nachfolgenden Ausführungen zu verringern.
  • F. Führe die Steuerung an dem Punkt, der durch die Simulation der Befehle bestimmt ist, zum Programm zurück.
  • G. Nachdem alle Testfälle ausgeführt wurden, zeige die Tabelle an, um alle Wege zu zeigen, die nicht ausgeführt wurden, und die Adressen, an denen sie sind.
  • Das IBM Technical Disclosure Bulletin Vol. 24, Nr.2, Juli 1981, Seite 1192, "Permanent Breakpoints using Hardware Trace", R. J. Bowdry et. al., betrifft das Vorsehen von "permanenten" Programmstopps, wobei in einfacher Weise und ohne Leistungsverringerung die ersten zwei Bytes eines Befehls durch einen Organisationsaufruf- (SVC) Befehl ersetzt werden, während die ersetzten zwei Bytes gespeichert werden. Wenn der SVC-Befehl während der Programmausführung angetroffen wird, erlangt das Austestleistungsmerkmal die Steuerung. Um permanente Programmstopps zu erreichen, werden zwei Ablaufunterbrechungen herangezogen, die dem anfänglichen SVC folgen, der verursacht hat, daß das Austestprogramm an dem Programmstopps die Steuerung erhält. Nach der zweiten Ablaufunterbrechung wird der Unterbrechungspunkt wiederhergestellt und das Ablauf-Bit wird abgeschaltet.
  • Die Erfindung versucht eine verbesserte Technik zum Bestimmen, welche eines Untersatzes eines Satzes von ausführbaren Befehl in einem Programm nicht ausgeführt werden, wenn das Programm laufen gelassen wird, zu schaffen.
  • Gemäß der vorliegenden Erfindung wird ein Verfahren zum Bestimmen, welche eines ausgewählten Untersatzes eines ersten Satzes von ausführbaren Befehlen nicht ausgeführt werden, wenn ein Computerprogramm, das den ersten Satz von ausführbaren Befehlen enthält, ausgeführt wird, geschaffen, wie im Anspruch 1 definiert ist.
  • Die Erfindung schafft ferner ein System zum Ausführen eines Computerprogramms, um zu bestimmen, welche eines ausgewählten Untersatzes eines ersten Satzes von ausführbaren Befehlen nicht ausgeführt werden, wenn das Computerprogramm ausgeführt wird, wie im Anspruch 9 bestimmt ist.
  • Somit schafft diese Erfindung ein Abdeckungsmeßwerkzeug, das mißt, welche Befehle ausgeführt wurden und welche Befehle nicht ausgeführt wurden, während die Nachteile, die dem Stand der Technik anhaften, überwunden werden. Keine Vorverarbeitung oder Probeentnahme wird verwendet. Das Werkzeug ist einfach zu verwenden, und Messungen können in der normalen Testumgebung des Testers ausgeführt werden. Die Messung wird unter Verwendung derselben ausführbaren Objektcodeversion des Programms ausgeführt, die nach dem Testen freigegeben wird. Verschiedene Programme oder Mehrfachtests desselben Programms können gleichzeitig gemessen werden. Die Ausgabe der Messung kann direkt in problemorientierte Programmsprachen-Quellanweisungen abgebildet werden. Die Größe des Objektcodes wird nicht geändert. Das Meßwerkzeug verringert die Ausführungsleistung des getesteten Programms nicht merklich.
  • Gemäß der Erfindung werden Befehle auf Maschinenebene zur Messung ausgewählt, und jeder dieser Befehle wird durch einen Meßbefehl ersetzt. Vorzugsweise ist der Meßbefehl ein eine Unterbrechung verursachender Befehl. Dann wird das Programm, das die Meßbefehle enthält, ausgeführt. Wenn ein Meßbefehl ausgeführt wird, wird der gemessene (ersetzte) Befehl identifiziert und ein Wert wird gespeichert, um anzugeben, daß der gemessene Befehl ausgeführt wurde. Dann wird der gemessene Befehl durch Ersetzen des Meßbefehls mit dem Originalbefehl wiederhergestellt, und die Ausführung fährt mit dem wiederhergestellten Befehl fort. Die Auswirkung auf die Ausführungsleistung (wie sie durch abgelaufene Zeit gemessen wird) ist minimal, da das Ersetzen nur einmal für jeden ausgewählten Befehl ausgeführt wird, selbst wenn der ausgewählte Befehl vielfach ausgeführt wird.
  • Bei einer Ausführung der Erfindung wird der erste Befehl jedes Blocks eines ausführbaren Objektcodes, der von einer Quelisprachenanweisung kompiliert wurde, zur Messung ausgewählt. Dies schafft eine Anweisungsebenen- Abdeckungsmessung. Jeder ausgewählte Befehl wird durch einen Programmstopp-Befehl ersetzt, der nicht maskierbare Unterbrechungen verursacht. Um vielfache Anwender des gemessenen Programms unterzubringen, wird die Messung auf einer Duplikatkopie des Programms laufengelassen. Die Ergebnisse der Messung werden in einem Bitmap gespeichert, das zum Erzeugen einer Vielfalt von nützlichen Ausgaben verwendet werden kann, wie einer gekennzeichneten Kopie des Quellcodes, die angibt, welche Quellsprachenanweisungen ausgeführt wurden oder nicht. Diese Ausgaben können die Effizienz und Wirksamkeit der Qualitätssicherheitsbemühungen signifikant erhöhen.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 list ein Blockdiag ramm einer Computerspeichervorrichtung für die bevorzugte Ausführung.
  • Fig. 2 ist ein Flußdiagramm, das den Betrieb der FREIGABE-Funktion darstellt.
  • Fig. 3 ist ein Flußdiagramm, das den Betrieb der MESS-Funktion darstellt.
  • Fig. 4 ist ein Flußdiagramm, das den Betrieb des Programms als Antwort auf eine Programmstopp-Unterbrechung darstellt.
  • Fig. 5 ist ein Flußdiagramm, das den Betrieb der SICHERN-Funktion darstellt.
  • Fig. 6 ist ein Flußdiagramm, das den Betrieb der RÜCKSTELL-Funktion darstellt.
  • Fig. 7 ist ein Flußdiagramm, das den Betrieb der SPERREN-Funktion darstellt.
  • Fig. 8 ist ein Beispiel eines KENNZEICHNEN-Berichts.
  • Fig. 9 ist ein Beispiel der ANZEIGE-Ausgabe.
  • Fig. 10 ist ein Beispiel der SORTIERUNG-Ausgabe.
  • Fig. 11 ist ein Beispiel der ORDNUNG-Ausgabe.
  • Fig. 12 ist eine Pseudocode-Darstellung des Algorithmus, der zum Erzeugen des ORDNUNG-Berichts verwendet wird
  • Genaue Beschreibung der bevorzugten Ausführung
  • Bei der bevorzugten Ausführung wird das Verfahren der Erfindung durch ein Computerprogramm durchgeführt, das in der "TAL"-Sprache geschrieben ist, und auf einem "Tandem"-"NonStop"-Computer unter der Steuerung des "GUARDIAN 90"-Betriebssytems ausgeführt. ("Tandem", "TAL", "NonStop" und "GUARDIAN 90" sind Marken von Tandem Computers, Inc., von Cupertino California. Handbücher für die "TAL"-Sprache und das "GUARDIAN 90"- Betriebssystem und das "NonStop"-Systembeschreibungshandbuch sind von Tandem Computers, Inc., erhältlich.) Die folgende genaue Beschreibung unter Bezugnahme auf die Zeichnungen versetzt jene mit üblichen Fachkenntnissen in die Lage, die Erfindung auszuführen und zu nutzen.
  • ABDECKEN ist ein Satz von Programmodulen, von denen einige im ABDECKEN-Befehlsinterpreter (COVERCOM), einige iN DER Überwachungseinrichtung (CVRMON) und einige im Betriebssystem sind (im Programmstopp-Unterbrechungstreiber). In der folgenden Beschreibung werden Bezugnahmen auf Seiten im Anhang zusammen mit Bezugnahmen auf Flußdiagrammblöcke bereitgestellt.
  • Diese Bezugnahmen auf den Quellcodeanhang sind in der Form "(Annn)", wobei "nnn" eine Seitenzahl im Anhang A ist. Der Quellcode wird eine vollständige Offenbarung der bevorzugten Ausführung bereitstellen. Jedoch wird jemand mit üblichen Kenntnissen in der relevanten Technik in der Lage sein, die Erfindung ohne Bezugnahme auf die Quellcodeauflistung anhand der Beschreibung und Diagramme hierin auszuführen.
  • Die bevorzugte Ausführung mißt eine Anweisungsabdeckung. Die Anweisungsabdeckung ist ein Maß, welche Quellcodeanweisungen ausgeführt werden (und welche nicht). Andere Abdeckungsarten (wie Codeabdeckung, die ein Maß der Ausführung von Maschinenbefehlen ist) liegen innerhalb des Umfangs der Erfindung, da die tatsächliche Messung an ausgewählten Maschinenbefehlen im Objektcode ausgeführt wird.
  • Unter Bezugnahme auf die Fig. 1 stellt ein vereinfachtes Blockdiagramm die logische Organisation einer Computerspeichervorrichtung 4 zum implementieren der bevorzugten Ausführung der Erfindung dar. Es sind zwei Prozeßsteuerblöcke (PCBs) 6, 7 gezeigt. In diesem Computersystem sind bis zu 256 aktive PCBs, von denen jeder einen Prozeß oder eine Aufgabe steuert. Ein Prozeß ist ein laufender Aufruf eines Programms in Verbindung mit einem einzelnen Anwender. Ein einzelnes Programm kann mehrere Prozesse für mehrere Anwender ausführen. PCBI 6 enthält einen Zeiger 6a, der zum Programmcodesegment 8 zeigt, und einen Zeiger 6b, der zum Datenbereich 9 zeigt. PCB2 7 enthält einen Zeiger 7a, der anfänglich (bevor eine ABDECKEN- Messung gestartet wird) zum Codesegment 8 zeigt (gestrichelter Pfeil), und einen Zeiger 7b, der zum Datenbereich 11 zeigt. Wenn das ABDECKEN- Programm 12 freigegeben ist, richtet es den Abdeckungsroutinen-Steuerblock (CRCB) 14 ein. Wenn ABDECKEN eine Messung an einem bestimmten Prozeß (PIN) initiiert, richtet es einen Abdeckungs-PIN-Datenblock (CPDB) 16 für diesen Prozeß ein und schreibt die CPDB-Adresse in einen der 256 Zeiger P(CPDB) 14a im CRCB. ABDECKEN macht dann eine Kopie 10 des Codesegments 8 und sichert einen Zeiger P(CODE) 16b zum Codesegment 8 und einen Zeiger P(COPY) 16a zur Kopie 10 in CPDB 16. ABDECKEN fügt meßverursachende Befehle an bestimmten Orten in die Codekopie 10 ein, richtet eine Bitmap 18 zum Speichern von Ergebnissen der Messung ein und speichert einen Zeiger zur Kopie 10 in einem Zeiger 7a von PCB2 7. Ein Zeiger P(BITMAP) zum Bitmap 18 wird in CPDB 16 gespeichert. Das System wird die Kopie 10 ausführen.
  • ABDECKEN muß durch den Systemoperator für eine bestimmte CPU (Zentralverarbeitungseinheit) freigegeben werden, bevor Anwender das Meßleistungsmerkmal an dieser CPU aufrufen können. (Diese Ausführung ist auf einem System realisiert, das mehrere CPUs hat.) Der Systemoperator gibt den FREIGABE-Befehl aus, um Messungen an einer bestimmten CPU zuzulassen. Unter Bezugnahme auf die Fig. 2 stellt das Flußdiagramm 20 die Operation von ABDECKEN als Antwort auf den FREIGABE-Befehl dar (A-663- 4). Beim Block 22 (A-123), ist der Speicher für einen Abdeckungsroutinen- Steuerblock (CRCB) zugeordnet. Das Format der CRCB-Datenstruktur ist in der Tabelle 1 (A-296-7) gezeigt. Beim Block 24 (A-123) ist der CRCB-Speicherraum gesperrt, um ihn speicherresistent zu machen und um absolutes Adressieren zuzulassen. Der CRCB wird beim Block 26 initialisiert (A-123). Der CRCB wird gelöscht (auf Nullen) und dann werden die Verifiziereinrichutng ("CovR" in dieser Ausführung) und andere Anfangsblockfelder eingestellt. Beim Block 28 (A-123) wird die Adresse des CRCBs an einem fest vorgegebenen Ort im Speicher gespeichert (globaler Zeiger). Die Adresse des globalen Zeigers ist dem Operationssystem bekannt, das den Programmstopp-Unterbrechungstreiber enthält. ABDECKEN ist nun freigegeben, und Anwender können Messungen ausführen. TABELLE I VERIFIZIEREINRICHTUNG "CovR" VERSION XCVRN ^ PIN PrivFreigegeben SpeicherVerhältnis AblaufSpeicher Datei zum Messen [0:127] Steuerung durch PIN [0:255]
  • Die Messung wird folgendermaßen ausgeführt. Das Programm "COVERCOM" wird laufengelassen, um den ABDECKEN-Befehlsinterpreter aufzurufen. Um eine Messung eines Prozesses zu starten, wird der Befehl "MESSEN" mit einer Prozeßidentifikationsnummer ("PIN") ausgegeben, die den zu messenden Prozeß identifiziert. Unter Bezugnahme auf die Fig. 3 stellt ein Flußdiagramm 30 die Operation von ABDECKEN als Antwort auf den MESSEN-Befehl (A-541) dar. Beim Block 32 (A-543) wird ein Test gemacht, um zu bestimmen, ob ABDECKEN freigegeben ist. Die Adresse am vorgegebenen Ort des globalen Zeigers im Speicher wird gelesen. Wenn die Adresse nicht Null ist, ist ABDECKEN freigegeben. Wenn ABDECKEN nicht freigegeben ist, kann keine Messung ausgeführt werden und das Programm steigt aus (Block 34) und informiert den Anwender mit einer Fehlermeldung.
  • Wenn ABDECKEN freigegeben ist, wird beim Block 36 (A-543-4) ein Test durchgeführt, um zu bestimmen, ob an dem spezifizierten Prozeß eine Messung abläuft (an einem Prozeß ist gleichzeitig nur eine Messung erlaubt). Wie in der Tabelle I zu sehen ist, gibt es eine Gruppe von 256 SteuerungDurchPin-Felder (eines für jeden möglichen Prozeß an einer CPU) in der CRCB. Jedes Feld enthält einen Zeiger zu einem Erfassen-PlN-Datenblock, wenn dieser Prozeß gemessen wird. Wenn ein Prozeß nicht gemessen wird, ist das dem PIN entsprechende Feld Null. Wenn der Einsprung für den angeforderten Prozeß nicht Null ist, existiert beim Block 38 somit das ABDECKEN-Programm und informiert den Anwender mit einer Fehlermeldung. Wenn der Einsprung für den angeforderten Prozeß Null ist, initiiert ABDECKEN eine Messung.
  • Beim Block 40 ist ein Erfassen-Pin-Datenblock (CPDB) für den angeforderten Prozeß eingerichtet und die Adresse wird für diesen Prozeß in den CRCB- Steuerung Durch Pin-Eingang geschrieben. (Alternativ können die Erfassen-Pin- Datenblöcke eingerichtet werden, wenn ABDECKEN freigegeben wird; in diesem Fall wird das Statusfeld verwendet, um anzuzeigen, ob für eine PIN eine Messung abläuft.) Die Tabelle II (A-296) zeigt das Format eines CPDBs. Beim Block 42 (A-125) wird die Segmentnummer für den Programmcode aus dem code.seg-Feld in dem PCB für diesen Prozeß gelesen und in den CPDB beim Feld UC.SEG geschrieben. (Die Segmentnummer ist äquivalent der Startadresse des Codes, da Programme an Speichersegmentgrenzen starten. Der Programmzähler mißt die Distanzadresse in ein Segment.) Beim Block 44 (A-126, A-686) wird ein Speicherblock für eine Kopie des Programmcodes zugeordnet. Beim Block 46 (A-687) wird der Speicher blockweise "gesperrt", um sicherzustellen, daß er für die Dauer der Messung jederzeit adressierbar bleibenwird. TABELLE II Zustand Immer gesichert Sichere Vol UC.Seg UC.CopySeg UG.Name UC.Timestamp UC.SpaceCount UC.Space Size UC.Bitmap Ptr.
  • Beim Block 48 (A-686) wird der Programmcode in den zugeordneten Speicherblock kopiert. Beim Block 50 (A-687) wird die Segmentnummer für diesen Speicherblock am Ort UC.CopySeg in den CPDB geschrieben. Beim Block 52 (A-116-7) wird der Speicher für ein "Bitmap" erhalten (und abgesperrt). Das Bitmap wird verwendet, um die Ergebnisse der Messung des Prozesses zu speichern. Jedes Bit in dem Bitmap entspricht einem Wort (2- Bytes, die Länge eines Befehis) im Objektcode. Das Bitmap ist auf Nullen initialisiert und seine Adresse ist in dem CPDB beim Feld UC.Bitmap.Ptr gespeichert.
  • Die Maschinenbefehle, die gemessen werden sollen, werden nun ausgewählt. Programme, die auf einem Tandem-Compiler mit der "'Inspect'-Symbole"- Option kompiliert sind, enthalten eine Liste von "Anweisungsstartern", die auf den ersten Maschinencodebefehl jeder kompilierten Quellensprachenanweisung zeigen. ("Inspect" ist eine Marke von Tandem Computers, Inc.) Für die Anweisungsabdeckung dieser Ausführung werden diese Anweisungsstart-Maschinenbefehle als der Satz von Befehlen ausgewählt, die gemessen werden sollen. Bei anderen Ausführungen können andere Einrichtungen zum Auswählen der gemessenen Befehle verwendet werden. Zum Beispiel können alle der Codebefehle ausgewählt werden (Codeabdeckung), solange wie Befehle in der Objektdatei von Daten unterschieden werden können.
  • Beim Block 54 (A-157-9) werden die Anweisungsstarter gelesen, und Meßbefehle werden an die Stelle der Anweisungsstart-Maschinencodebefehle geschrieben. Bei dieser Ausführung werden Programmstopp-Befehle als die Meßbefehle verwendet. Programmstopp-Befehle werden in diesem Gomputersystem verwendet, um Unterbrechungen zu verursachen und die Steuerung auf den entsprechenden Unterbrechungstreiber in dem Betriebssystem zu übertragen. Bei anderen Ausführungen können andere Meßbefehle verwendet werden, wie ein SVC (Organisationsaufruf) oder ein Befehl mit einem ungültigen Operationscode. Subroutinenaufrufe können ebenfalls verwendet werden, aber es ist vorzuziehen, nicht maskierbare unterbrechungsverursachende Befehle zu verwenden, um die Messung von innerhalb des Betriebssystems auszuführen.
  • Beim Block 56 (A-128) wird die Segmentnummer der Codekopie (UC.CopySeg) für diesen Prozeß beim code.seg-Feld in den PCB geschrieben. Dieses Feld in dem PCB speichert die Segmentnummer für das Programm, das zum Ausführen des Prozesses verwendet wird, und es ist dasselbe Feld, aus dem die Original-Codesegmentnummer nach UC.seg kopiert wurde. UC.seg speichert somit die Adresse des "Original"-Codes, und der PCB hat die Adresse der Codekopie. Dies veranlaßt das System, die Codekopie mit den Programmstopps zu verwenden, um diesen Prozeß auszuführen. Andere Prozesse können den unmodifizierten Originalcode verwenden, während die Messung an der Kopie stattfindet.
  • Wenn die Codekopie läuft, wird, wann immer ein ausgewählter Befehl ausgeführt würde, zuerst ein Programmstopp-Befehl ausgeführt. Dies verursacht eine Programmstopp-Unterbrechung.
  • Unter Bezugnahme auf die Fig. 4 zeigt ein Flußdiagramm 62 die Wirkung der Programmstopp-Unterbrechung. Beim Block 64 (A-84) ruft der Programmstopp- Unterbrechungstreiber die ABDECKEN-Prozedur. Beim Block 66 (A-86) wird ein Test durchgeführt, um zu bestimmen, ob ABDECKEN freigegeben ist. Dies wird durch Lesen des globalen Zeigers, wo die CRCB-Adresse gespeichert ist, und Bestimmen, ob die Adresse von Null verschieden ist, ausgeführt. Wenn ABDECKEN nicht freigegeben ist, kehrt das aufgerufene Programm (Block 68) zum "Standard"-Unterbrechungstreiber zurück. Wenn ABDECKEN freigegeben ist, wird bei Block 70 (A-86) die Unterbrechungslaufumgebung adressierbar gemacht. Dann wird beim Block 72 (A-86) ein Test durchgeführt, um zu bestimmen, ob der unterbrochene Prozeß ein gemessener Prozeß ist. Die PIN des unterbrochenen PCBs wird von einem globalen Speicherort gelesen und zum Indexieren in den CRCB hinein verwendet, um zu bestimmen, ob es einen von Null verschiedenen Adressenzeiger zu einem CPDB für diese PIN gibt. Wenn der Zeiger für diese PIN Null ist, wird dieser Prozeß nicht gemessen, und an einem Block 74 wird die Steuerung zum Standard-Unterbrechungstreiber zurückgegeben. Wenn der Zeiger für diese PIN von Null verschieden ist, wird das ZUSTAND-Feld in dem CPDB geprüft. Dieses Feld zeigt an, ob die Messung aktuell läuft. (Während das Programm kopiert wird und Programmstopps eingefügt werden, wird das Zustandsfeld verwendet, um diesen Zwischenzustand anzuzeigen.)
  • Wenn der Prozeß gemessen wird, wird beim Block 76 (A-86) das geeignete Bit in dem Bitmap eingestellt, um anzuzeigen, daß der Befehl ausgeführt wurde. Das Bit entsprechend dem unterbrochenen (gemessenen) Befehl wird folgendermaßen gefunden: Der unterbrochene Befehl wird durch Lesen des Programmzählers in dem Programmumgebungsregister identifiziert, um die Distanzadresse (in Worten) in das Segment hinein für den Programmstopp-Befehl zu erhalten, der die Unterbrechung verursacht hat; diese Wort- Distanzadresse wird als eine Bit-Distanzadresse von der Bitmap-Startadresse verwendet, die (bei UC.BitmapPtr) in dem CPDB gespeichert ist. Das Bit an jener Distanzadresse wird auf Eins gesetzt, um die Ausführung des entsprechenden gemessenen Befehls anzuzeigen.
  • Nach dem Einstellen des Bits in dem Bitmap wird der Programmstopp-Befehl in der Codekopie durch den tatsächlichen Befehl ersetzt, der ausgeführt werden soll (Block 78, A-87). Die Distanzadresse vom Programmzähler wird zur Segmentnummer in dem UC.seg-Feld in dem CPDB verkettet. Eine niederrangige 0 wird hinzuaddiert (um 0 Byte Distanzadresse in den Befehl hinein anzuzeigen) um an der 32-Bitadresse des Befehls anzukommen. Die Adresse des Befehls in der Codekopie wird in derselben Weise unter Verwendung des UC.copy.seg-Feldes in dem CPDB und der Distanzadresse vom Programmzähier erhalten. Der gemessene Befehl vom Originalprogramm wird in die Ausführungscodekopie kopiert, wodurch der Programmstopp-Befehl ersetzt wird. Beim Block 80 (A-88) wird die Steuerung zum Programm zur Ausführung des tatsächlichen Befehls zurückgegeben.
  • Bei dieser Ausführung wird der Programmstopp-Befehl ebenfalls zum Austesten verwendet. Daher wird vor dem Ersetzen des Programmstopp- Befehls durch den tatsächlichen Befehl ein Test durchgeführt, um zu bestimmen, ob ein Austest-Haltepunkt eingestellt wurde. Wenn das Diagnoseprogramm einen Programmstopp eingestellt hat, wird ABDECKEN einen Programmstopp in dem Originalcode finden. Eine Programmstopp- Tabelle speichert den Befehl, der durch einen Austest-Programmstopp ersetzt wurde. ABDECKEN wird den Befehl in der Programmstopp-Tabelle verwenden, um den Programmstopp in der Kopie zu ersetzen. Die Steuerung kehrt zum Unterbrechungstreiber statt zum Programm zurück. Der Unterbrechungstreiber wird die Austestroutine für diesen Programmstopp ausführen. (Es ist verständlich, daß diese Routine nur erforderlich ist, weil diese Ausführung denselben Programmstopp-Befehl verwendet, der von dem Diagnoseprogramm verwendet wird. Bei anderen Ausführungen kann ein einheitlicher, eine Unterbrechung verursachender Befehl verwendet werden, oder ein zusammentreffendes Austesten kann untersagt werden.)
  • Der Anwender kann den SICHERN-Befehl an jedem Punkt ausgeben, um die Bitmap-Daten zu sichern. Unter Bezugnahme auf die Fig. 5 stellt das Flußdiag ramm 88 die Operation von ABDECKEN als Antwort auf den SICHERN-Befehl dar. Beim Block 90 (A-12) wird das Bitmap für die spezifizierte PIN zu einem anderen Ort im Speicher kopiert. Beim Block 92 (A- 23) wird eine Magnetplattendatei zum Sichern des Bitmaps erzeugt. Dann wird beim Block 94 (A-23) ein Anfangsblock in die Bitmap-Datei mit dem Namen des gemessenen Programms, seinem Zeitaufdruck, etc. unter Verwendung der Daten in dem CPDB für den gemessenen Prozeß geschrieben. Dann wird beim Block 96 das Bitmap zu dieser Magnetplattendatei geschrieben. Das "immer gesicherte" Feld in dem CPDB wird aktualisiert, um anzuzeigen, daß das Bitmap gesichert wurde. Auch wenn ein Prozeß zu Ende geht, wird, wenn der Prozeß gemessen wurde, die Systemüberwachungseinrichtung die Bitmap- Daten sichern.
  • Der RÜCKSTELLEN-Befehl kann von dem Anwender oder dem Betriebssystem nach einer Sicherungsoperation ausgegeben werden. Unter Bezugnahme auf Fig. 6 stellt ein Flußdiagramm 108 die Operation des Programms in Antwort auf den RÜCKSTELLEN-Befehl dar. Beim Block 110 (A-670-1) wird die Originalcodesegmentnummer vom CPDB-Feld UC.seg. in den PCB kopiert, was verursacht, daß der Originalcode anstelle der Kopie ausgeführt wird. Beim Block 112 ist der Codekopiespeicherraum unversperrt. Beim Block 114 (A-130, A-698) wird der Speicherraum freigegeben (Zuweisung aufgehoben), und beim Block 116 (A-130, A-140) wird der Bitmap-Raum freigegeben. Die Messung ist somit beendet.
  • Unter Bezugnahme auf die Fig. 7 ist der SPERREN-Befehl dargestellt. Der SPERREN-Befehl führt die entgegengesetzten Funktionen des FREIGABE- Befehls aus. Beim Block 122 (A-660) testet das Programm, um zu bestimmen, ob ABDECKEN freigegeben ist, und, falls nicht, ob es existiert. Beim Block 126 (A-122) werden Nullen an den globalen Zeiger geschrieben, der die Adresse des CRCBs enthält. Beim Block 128 (A-122) wird der CRCB-Speicher freigegeben. Beim Block 130 (A-122) wird der CRCB-Speicherraum freigegeben (Zuweisung aufgehoben).
  • Das Bitmap wird zum Erzeugen verschiedener nützlicher Ausgaben verwendet.
  • Ein nützlicher Ausgabebericht ("MARKUP") (A-505-618), der bei der bevorzugten Ausführung erzeugt wird, ist eine markierte Quellencodeauflistung, wie die, die in der Fig. 8 gezeigt ist. Anweisungen, die nicht ausgeführt wurden, sind mit einem Stern (*) markiert. Wenn mehr als eine Anweisung auf derselben Zeile auftritt, zeigt ein Plus (+) an, daß eine Anweisung ausgeführt wurde, aber Irgendeine weitere Anweisung nicht ausgeführt wurde. Dieser Bericht wird unter Verwendung derselben Symboltabelle in der Objektdatei erzeugt, die zum Einfügen der Programmstopp-Befehle verwendet wurde. Die Symboltabelle zeigt die Distanzadressen in den Objektcode hinein an, an denen kompilierte Quellenanweisungen beginnen. Diese selben Distanzadressen (in Bits anstelle von Worten) werden verwendet, um in das Bitmap hinein zu indexieren, um zu testen, ob ein Anweisungs-Startbefehl ausgeführt wurde. Der "ANZEIGE"-Befehl zeigt eine Auflistung von allen Anweisungs- Quellendateizeilennummern in dem gemessenen Programm an. Alle unausgeführten Anweisungen sind mit einem Stern markiert. Für jede Prozedur und für das gesamte Programm sind Statistiken enthalten, die die Anzahl von Anweisungen und den Prozentsatz von jenen, die nicht ausgeführt wurden, anzeigen. Ein Beispiel ist in der Fig. 9 gezeigt.
  • Ein weiterer nützlicher Bericht ("SORTIERUNG") (A-641-52) ist in der Fig. 10 gezeigt. Dieser Bericht berichtet alle Sequenzen von über n unausgeführten benachbarten Anweisungen, wobei n durch den Anwender/Anforderer spezifiziert ist. Die Anweisungsstarter werden gelesen und mit dem Bitmap verglichen. Unausgeführte benachbarte Anweisungen werden nachgezählt, bis eine ausgeführte Anweisung gefunden wird, und eine neue Rechnung wird begonnen. Die Rechnungen werden dann sortiert.
  • Der "ORDNUNG"-Bericht (A-555-75) ist in der Fig. 11 gezeigt. Wenn ein existierender Satz von K Testfällen gegeben ist, ist es nützlich, die Testfälle zu ordnen, so daß der Test mit der höchsten Abdeckung zuerst laufengelassen wird. Nach diesem Test wird der nächste Testfall ausgewählt, so daß er das meiste zur Gesamtabdeckung hinzufügt, etc. Dies wird das Programm dem breitesten Testen in der kürzesten Zeit aussetzen.
  • Zuerst werden die Bitmaps komprimiert, um nur die Bits zu enthalten, die Quellencodeanweisungsstartern entsprechen. Wenn das Programm N Anweisungen hat, bilden die komprimierten Bitmaps für die K Testfälle eine Bit- Matrix X(K,N). Unter Bezugnahme auf die Fig. 12 ist eine Pseudocodeversion des Algorithmus zum Ordnen der Testfälle gegeben. Zuerst wird der Testfall J, der die meiste Abdeckung ergibt, identifiziert. Dann wird jedes der verbleibenden Bitmaps mit dem Bitmap für jeden der K-1 verbleibenden Testfälle geODERt (inklusives oder) um die Kombination herauszufinden, die die höchste Abdeckung ergibt. Das kombinierte Bitmap für diese zwei Fälle wird dann mit jedem der K-2 verbleibenden Fälle geodert, etc.
  • Andere Bool'sche Operationen, wie UND, EXKLUSIV-ODER, können ebenfalls auf spezifizierte Bitmaps auf Anforderung hin angewandt werden. Das ODER und exklusive oder (XOR) kann auf Bitmaps A und B angewandt werden, um die inkrementierende Zunahme anzuzeigen, die durch Testfälle geschaffen wird. Die Funktion (A oder B) XOR A bestimmt, was Test B erfaßt, das Test A nicht erfaßt. Die UND-Operation zeigt an, welche Anweisungen von allen Testfällen getestet wurden.
  • Zusammenfassend wurde eine neue Technik zum Messen der Ausführung eines Computerprogramms beschrieben.

Claims (11)

1. Verfahren zum Bestimmen, welche eines ausgewählten Untersatzes eines ersten Satzes von ausführbaren Befehlen nicht ausgeführt werden, wenn ein Computerprogramm (8), das den ersten Satz von ausführbaren Befehlen enthält, ausgeführt wird, enthaltend die Schritte:
Erstellen (48) einer Programmkopie (10) des Computerprogramms (8), wobei die Programmkopie einen zweiten Satz von ausführbaren Befehlen enthält, der mit dem ersten Satz von ausführbaren Befehlen identisch ist Speichern der Programmkopie (10),
Modifizieren der gespeicherten Programmkopie durch Ersetzen (54) jedes ausführbaren Befehls des ausgewählten Untersatzes des zweiten Satzes in der Programmkopie (10) mit einem eine Unterbrechung verursachenden Befehl,
Starten der Ausführung der modifizierten Programmkopie,
Durchführen der folgenden Schritte in Abhängigkeit von der Ausführung jedes der eine Unterbrechung verursachenden Befehle in der modifizierten Programmkopie:
Lokalisieren eines mit dem durch den ausgeführten der eine Unterbrechung verursachenden Befehle ersetzten Befehl identischen Befehis in dem ersten Satz von ausführbaren Befehlen,
Wiederherstellen (78) des ersetzten Befehls durch Schreiben des lokalisierten Befehls an Stelle des ausgeführten eine Unterbrechung verursachenden Befehls in die modifizierte Programmkopie,
Speichern (76) einer Indikation, daß der ersetzte Befehl wiederhergestellt wurde, und
Ausführen (80) der wiederhergestellten Befehle, und
Bestimmen, welche des ausgewählten Untersatzes von Befehle wiederhergestellt und ausgeführt wurden, durch Lesen deren gespeicherter Indikation.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der eine Unterbrechung verursachende Befehl ein Programmstopp-Befehl ist.
3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der eine Unterbrechung verursachende Befehl ein ungültiger Befehl ist.
4. Verfahren nach Anspruch 1, dadurch gekennzeichnet daß es ferner den Schritt des Berichtens enthält, welche des ausgewählten Untersatzes von Befehlen wiederhergestellt und ausgeführt wurden.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß es ferner den Schritt des Berichtens enthält, welche des ausgewählten Untersatzes von Befehlen nicht wiederhergestellt und ausgeführt wurden.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß es ferner den Schritt des Bezeichnens in Abhängigkeit von der Ausführung eines Meßbefehls enthält, daß der durch den eine Unterbrechung verursachenden Befehl ersetzte Befehl ausgeführt werden wird.
7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß der Bezeichnungsschritt das Speichern einer Indikation, daß der eine Unterbrechung verursachende Befehl ablief, in dem Computersystem enthält.
8. Verfahren nach Anspruch 7, dadurch gekennzeichnet daß es ferner den Schritt des Berichtens enthält, daß jeder wiederhergestellte Befehl ausgeführt wurde.
9. System zum Ausführen eines Computerprogramms (8) zum Bestimmen, welche eines ausgewählten Untersatzes eines ersten Satzes von ausführbaren Befehlen nicht ausgeführt werden, wenn das Computerprogramm, das den ersten Satz von ausführbaren Befehlen enthält, ausgeführt wird, enthaltend:
Speichereinrichtungen (14) zum Speichern von Programmen und Daten, wobei das Computerprogramm in den Speichereinrichtungen (14) gespeichert ist,
Kopiereinrichtungen, die eine Programmkopie (10) des Computerprogramms erstellen und sie in den Speichereinrichtungen (14) speichern, wobei die Programmkopie einen zweiten Satz von ausführbaren Befehlen enthält, der mit dem ersten Satz von ausführbaren Befehlen identisch ist,
mit den Speichereinrichtungen (14) gekoppelte Verarbeitungseinrichtungen, die die gespeicherte Programmkopie durch Ersetzen (54) jedes ausführbaren Befehis des ausgewählten Untersatzes des zweiten Satzes in der Programmkopie mit einem eine Unterbrechung verursachenden Befehl modifizieren und dann die Programmkopie ausführen, und die in Abhängigkeit von der Ausführung jedes der eine Unterbrechung verursachenden Befehle in der modifizierten Programmkopie einen mit dem durch den ausgeführten der eine Unterbrechung verursachenden Befehle ersetzten Befehl identischen Befehis in dem ersten Satz von ausführbaren Befehlen lokalisiert, den ersetzten Befehl durch Schreiben des lokalisierten Befehls an Stelle des ausgeführten eine Unterbrechung verursachenden Befehls in die modifizierte Programmkopie wiederherstellt, den wiederhergestellten Befehl ausführt und eine Indikation in dem Speicher speichert, daß der ersetzte Befehl wiederhergestellt wurde, und
Berichteinrichtungen, die berichten, welche des ausgewählten Untersatzes von Befehlen wiederhergestellt und ausgeführt wurden, durch Lesen deren in dem Speicher gespeicherter Indikation.
10. System nach Anspruch 9, dadurch gekennzeichnet daß der eine Unterbrechung verursachende Befehl ein Programmstopp-Befehl ist.
11. System nach Anspruch 9, dadurch gekennzeichnet, daß der eine Unterbrechung verursachende Befehl ein ungültiger Befehl ist.
DE3854546T 1987-07-10 1988-07-08 Verfahren und Gerät zur Programmablaufmessung. Expired - Fee Related DE3854546T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/072,811 US4910663A (en) 1987-07-10 1987-07-10 System for measuring program execution by replacing an executable instruction with interrupt causing instruction

Publications (2)

Publication Number Publication Date
DE3854546D1 DE3854546D1 (de) 1995-11-09
DE3854546T2 true DE3854546T2 (de) 1996-05-15

Family

ID=22109900

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3854546T Expired - Fee Related DE3854546T2 (de) 1987-07-10 1988-07-08 Verfahren und Gerät zur Programmablaufmessung.

Country Status (5)

Country Link
US (1) US4910663A (de)
EP (1) EP0307075B1 (de)
JP (1) JPH0193839A (de)
AU (1) AU618269B2 (de)
DE (1) DE3854546T2 (de)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02199548A (ja) * 1988-11-09 1990-08-07 Asea Brown Boveri Ag 電算機系で作成されるオブジエクト・プログラムの時間経過を観察する方法とこの方法を実行する観測器具
US5134701A (en) * 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
US5050168A (en) * 1989-12-29 1991-09-17 Paterson Timothy L Test coverage analyzer
GB2258064B (en) * 1991-07-26 1995-07-12 Research Machines Plc Monitoring execution of a computer program to provide test coverage analysis
US5301312A (en) * 1991-08-21 1994-04-05 International Business Machines Corporation Method and system for utilizing benign fault occurrence to measure interrupt-blocking times
WO1994009432A1 (de) * 1992-10-15 1994-04-28 Siemens Aktiengesellschaft Verfahren zur durchfürhung mindestens eines tests an mindestens einem von auf einem rechner parallel ablauffähigen objekten eines objektorientierten programmes
DE4315944A1 (de) * 1993-05-12 1994-11-17 Siemens Ag Verfahren zur maschinellen Überwachung des Ablaufs eines Programmsystems
US5495561A (en) * 1993-06-21 1996-02-27 Taligent, Inc. Operating system with object-oriented printing interface
US5758160A (en) * 1993-06-28 1998-05-26 Object Technology Licensing Corporation Method and apparatus for building a software program using dependencies derived from software component interfaces
US5325533A (en) * 1993-06-28 1994-06-28 Taligent, Inc. Engineering system for modeling computer programs
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
WO1995015529A1 (en) * 1993-12-01 1995-06-08 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US5790397A (en) 1996-09-17 1998-08-04 Marathon Technologies Corporation Fault resilient/fault tolerant computing
US6253368B1 (en) * 1997-03-31 2001-06-26 International Business Machines Corporation Dynamically debugging user-defined functions and stored procedures
US6393490B1 (en) 1997-12-18 2002-05-21 Ian James Stiles Method and system for a programmatic feedback process for end-user support
US20040205704A1 (en) * 1999-12-27 2004-10-14 Miller Donald W. Transparent monitoring system and method for examining an executing program in real time
US6883168B1 (en) * 2000-06-21 2005-04-19 Microsoft Corporation Methods, systems, architectures and data structures for delivering software via a network
US7155667B1 (en) 2000-06-21 2006-12-26 Microsoft Corporation User interface for integrated spreadsheets and word processing tables
JP4522650B2 (ja) 2000-06-21 2010-08-11 マイクロソフト コーポレーション スプレッドシートとワードプロセッシングの表を統合するシステムと方法
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7117435B1 (en) 2000-06-21 2006-10-03 Microsoft Corporation Spreadsheet fields in text
US6948135B1 (en) * 2000-06-21 2005-09-20 Microsoft Corporation Method and systems of providing information to computer users
US7191394B1 (en) 2000-06-21 2007-03-13 Microsoft Corporation Authoring arbitrary XML documents using DHTML and XSLT
US7624356B1 (en) 2000-06-21 2009-11-24 Microsoft Corporation Task-sensitive methods and systems for displaying command sets
US6874143B1 (en) 2000-06-21 2005-03-29 Microsoft Corporation Architectures for and methods of providing network-based software extensions
US7346848B1 (en) 2000-06-21 2008-03-18 Microsoft Corporation Single window navigation methods and systems
US7191430B2 (en) * 2001-09-24 2007-03-13 Hewlett-Packard Development Company, L.P. Providing instruction execution hints to a processor using break instructions
US7243340B2 (en) * 2001-11-15 2007-07-10 Pace Anti-Piracy Method and system for obfuscation of computer program execution flow to increase computer program security
JP4224250B2 (ja) * 2002-04-17 2009-02-12 パイオニア株式会社 音声認識装置、音声認識方法および音声認識プログラム
EP1387279B1 (de) * 2002-07-31 2008-05-14 Texas Instruments Inc. Cachespeicherkohärenz in einem Multiprozessorsystem
US7062684B2 (en) * 2002-12-19 2006-06-13 International Business Machines Corporation Enabling tracing of a repeat instruction
US8225293B2 (en) * 2003-02-13 2012-07-17 Accurate Technologies Inc. Method for supporting calibration parameters in an ECU
US7650596B2 (en) * 2003-02-13 2010-01-19 Accurate Technologies Inc. Method for ECU calibration and diagnostics development
US7370066B1 (en) 2003-03-24 2008-05-06 Microsoft Corporation System and method for offline editing of data files
US7275216B2 (en) 2003-03-24 2007-09-25 Microsoft Corporation System and method for designing electronic forms and hierarchical schemas
US7415672B1 (en) 2003-03-24 2008-08-19 Microsoft Corporation System and method for designing electronic forms
US7913159B2 (en) 2003-03-28 2011-03-22 Microsoft Corporation System and method for real-time validation of structured data files
US7296017B2 (en) * 2003-03-28 2007-11-13 Microsoft Corporation Validation of XML data files
US7516145B2 (en) 2003-03-31 2009-04-07 Microsoft Corporation System and method for incrementally transforming and rendering hierarchical data files
US7168035B1 (en) 2003-06-11 2007-01-23 Microsoft Corporation Building a view on markup language data through a set of components
US7451392B1 (en) 2003-06-30 2008-11-11 Microsoft Corporation Rendering an HTML electronic form by applying XSLT to XML using a solution
US7197515B2 (en) * 2003-06-30 2007-03-27 Microsoft Corporation Declarative solution definition
US7581177B1 (en) 2003-08-01 2009-08-25 Microsoft Corporation Conversion of structured documents
US7406660B1 (en) 2003-08-01 2008-07-29 Microsoft Corporation Mapping between structured data and a visual surface
US7334187B1 (en) 2003-08-06 2008-02-19 Microsoft Corporation Electronic form aggregation
US8819072B1 (en) 2004-02-02 2014-08-26 Microsoft Corporation Promoting data from structured data files
US7318063B2 (en) 2004-02-19 2008-01-08 Microsoft Corporation Managing XML documents containing hierarchical database information
US7831979B2 (en) * 2004-04-28 2010-11-09 Agere Systems Inc. Processor with instruction-based interrupt handling
US7496837B1 (en) * 2004-04-29 2009-02-24 Microsoft Corporation Structural editing with schema awareness
US7568101B1 (en) 2004-05-13 2009-07-28 Microsoft Corporation Digital signatures with an embedded view
US7409518B2 (en) * 2004-05-21 2008-08-05 International Business Machines Corporation Method for improving disk space allocation
US7281018B1 (en) 2004-05-26 2007-10-09 Microsoft Corporation Form template data source change
US7774620B1 (en) 2004-05-27 2010-08-10 Microsoft Corporation Executing applications at appropriate trust levels
US7516399B2 (en) 2004-09-30 2009-04-07 Microsoft Corporation Structured-document path-language expression methods and systems
US20060074933A1 (en) * 2004-09-30 2006-04-06 Microsoft Corporation Workflow interaction
US7692636B2 (en) 2004-09-30 2010-04-06 Microsoft Corporation Systems and methods for handwriting to a screen
US8487879B2 (en) 2004-10-29 2013-07-16 Microsoft Corporation Systems and methods for interacting with a computer through handwriting to a screen
US7584417B2 (en) * 2004-11-15 2009-09-01 Microsoft Corporation Role-dependent action for an electronic form
US7712022B2 (en) * 2004-11-15 2010-05-04 Microsoft Corporation Mutually exclusive options in electronic forms
US7509353B2 (en) 2004-11-16 2009-03-24 Microsoft Corporation Methods and systems for exchanging and rendering forms
US7721190B2 (en) * 2004-11-16 2010-05-18 Microsoft Corporation Methods and systems for server side form processing
US7904801B2 (en) * 2004-12-15 2011-03-08 Microsoft Corporation Recursive sections in electronic forms
US7437376B2 (en) 2004-12-20 2008-10-14 Microsoft Corporation Scalable object model
US7937651B2 (en) 2005-01-14 2011-05-03 Microsoft Corporation Structural editing operations for network forms
US7725834B2 (en) * 2005-03-04 2010-05-25 Microsoft Corporation Designer-created aspect for an electronic form template
US7673228B2 (en) * 2005-03-30 2010-03-02 Microsoft Corporation Data-driven actions for network forms
US8010515B2 (en) * 2005-04-15 2011-08-30 Microsoft Corporation Query to an electronic form
US20070006166A1 (en) * 2005-06-20 2007-01-04 Seagate Technology Llc Code coverage for an embedded processor system
US7543228B2 (en) 2005-06-27 2009-06-02 Microsoft Corporation Template for rendering an electronic form
US8200975B2 (en) * 2005-06-29 2012-06-12 Microsoft Corporation Digital signatures for network forms
US7613996B2 (en) * 2005-08-15 2009-11-03 Microsoft Corporation Enabling selection of an inferred schema part
US20070036433A1 (en) * 2005-08-15 2007-02-15 Microsoft Corporation Recognizing data conforming to a rule
US8001459B2 (en) 2005-12-05 2011-08-16 Microsoft Corporation Enabling electronic documents for limited-capability computing devices
US7779343B2 (en) 2006-01-30 2010-08-17 Microsoft Corporation Opening network-enabled electronic documents
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8019566B2 (en) * 2007-09-11 2011-09-13 International Business Machines Corporation System and method for efficiently testing cache congruence classes during processor design verification and validation
US7992059B2 (en) 2007-09-11 2011-08-02 International Business Machines Corporation System and method for testing a large memory area during processor design verification and validation
US8006221B2 (en) 2007-09-11 2011-08-23 International Business Machines Corporation System and method for testing multiple processor modes for processor design verification and validation
US8099559B2 (en) * 2007-09-11 2012-01-17 International Business Machines Corporation System and method for generating fast instruction and data interrupts for processor design verification and validation
US20090070570A1 (en) * 2007-09-11 2009-03-12 Shubhodeep Roy Choudhury System and Method for Efficiently Handling Interrupts
US20090083616A1 (en) * 2007-09-25 2009-03-26 Microsoft Corporation Ubiquitous electronic forms
JP5228537B2 (ja) * 2008-02-29 2013-07-03 日本電気株式会社 テキスト表示装置、開発システム、テキスト表示方法及びプログラム
US8265606B2 (en) * 2008-10-09 2012-09-11 Microsoft Corporation Targeted advertisements to social contacts
US9003367B2 (en) * 2009-05-11 2015-04-07 International Business Machines Corporation Specific debug trace collecting
US8769497B2 (en) 2010-07-20 2014-07-01 General Electric Company System and method for use in indicating execution of application code
US20120023483A1 (en) * 2010-07-20 2012-01-26 Dan Welchman System and method for use in indicating execution of application code
US8645912B2 (en) 2010-08-31 2014-02-04 General Electric Company System and method for use in replaying software application events
US9069900B2 (en) * 2013-03-28 2015-06-30 Intel Mobile Communications GmbH Method for determining whether a machine code instruction of a machine code program is executed in the machine code program
US10540180B2 (en) * 2014-12-07 2020-01-21 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Reconfigurable processors and methods for collecting computer program instruction execution statistics
EP3472746B1 (de) 2016-06-16 2020-05-13 Virsec Systems, Inc. Systeme und verfahren zur behebung von speicherkorruption in einer computeranwendung
WO2022174246A1 (en) * 2021-02-10 2022-08-18 Microchip Technology Incorporated Trap sub-portions of computer-readable instructions and related systems, methods, and apparatuses
US11200151B1 (en) 2021-03-12 2021-12-14 Sas Institute Inc. Graphical user interface and debugger system for selecting and testing alterations to source code for software applications
CN113392006B (zh) * 2021-06-17 2022-07-12 浪潮思科网络科技有限公司 一种使用capsys监控自动化测试日志的方法及设备
CN119782137B (zh) * 2024-07-10 2025-11-11 电子科技大学 一种面向深度学习框架的代码覆盖率分析系统及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3509541A (en) * 1967-04-04 1970-04-28 Bell Telephone Labor Inc Program testing system
US3551659A (en) * 1969-05-05 1970-12-29 Charles O Forsythe Method for debugging computer programs
US3707725A (en) * 1970-06-19 1972-12-26 Ibm Program execution tracing system improvements
DE2432024A1 (de) * 1974-07-03 1976-01-22 Siemens Ag Verfahren zum betrieb einer datenverarbeitungsanlage
US4205370A (en) * 1975-04-16 1980-05-27 Honeywell Information Systems Inc. Trace method and apparatus for use in a data processing system
US4080650A (en) * 1976-07-28 1978-03-21 Bell Telephone Laboratories, Incorporated Facilitating return from an on-line debugging program to a target program breakpoint
US4231106A (en) * 1978-07-13 1980-10-28 Sperry Rand Corporation Performance monitor apparatus and method
JPS5750058A (en) * 1980-09-10 1982-03-24 Usac Electronics Ind Co Ltd Debugging method by instruction exchange
JPS5854456A (ja) * 1981-09-28 1983-03-31 Fujitsu Ltd 被デバツグ・プログラム・デバツグ制御方式
JPS5886648A (ja) * 1981-11-18 1983-05-24 Mitsubishi Electric Corp トレ−ス装置
EP0087064A3 (de) * 1982-02-18 1986-12-10 Hewlett-Packard Company Verfahren und System zur Programmfehlerbeseitigung
US4511961A (en) * 1982-04-16 1985-04-16 Ncr Corporation Apparatus for measuring program execution
US4462077A (en) * 1982-06-24 1984-07-24 Bell Telephone Laboratories, Incorporated Trace facility for use in multiprocessing environment
JPS593651A (ja) * 1982-06-30 1984-01-10 Fujitsu Ltd フア−ムウエアによる性能測定システム
US4635193A (en) * 1984-06-27 1987-01-06 Motorola, Inc. Data processor having selective breakpoint capability with minimal overhead

Also Published As

Publication number Publication date
US4910663A (en) 1990-03-20
JPH0193839A (ja) 1989-04-12
DE3854546D1 (de) 1995-11-09
EP0307075A2 (de) 1989-03-15
EP0307075B1 (de) 1995-10-04
EP0307075A3 (en) 1990-10-10
AU1879088A (en) 1989-01-12
AU618269B2 (en) 1991-12-19

Similar Documents

Publication Publication Date Title
DE3854546T2 (de) Verfahren und Gerät zur Programmablaufmessung.
DE69330537T2 (de) System zur Analyse und Fehlerbeseitigung integrierter Software durch dynamischen und interactiven Gebrauch von Kode-Markierern
DE69903629T2 (de) Prüfung der funktionsfähigkeit eines gerätetreibers
DE69216020T2 (de) Verbessertes fehlersuchsystem und -verfahren, besonders für die fehlersuche in einer multi-architekturumgebung
DE60130840T2 (de) Vorrichtung und Verfahren zur Katalogisierung von symbolischen Daten zur Verwendung bei der Leistungsanalyse von Computerprogrammen
DE4332993C1 (de) Tracer-System zur Fehleranalyse in laufenden Realzeitsystemen
DE69415593T2 (de) Verfahren zur Überprüfung eines nachrichtengesteuerten Betriebssystems
Ohba et al. Does imperfect debugging affect software reliability growth?
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
DE69604347T2 (de) Bestimmung der dynamischen Eigenschaften von Programmen
DE69523029T2 (de) Bytecodeprograminterpreter, Verfahren und Anordnung mit Vorprüfung von Datentyprestriktionen
DE3787431T2 (de) Verfahren zur Generierung einer Kandidatenliste von fehlerhaften Schaltungselementen und Verfahren zur Isolierung von Fehlern in einer logischen Schaltung unter Verwendung dieser Kandidatenliste.
DE68921775T2 (de) Prozessorssimulation.
DE69909945T2 (de) Verfahren und Anordnung zur Korrelation von Profildaten dynamisch erzeugt durch ein optimiertes ausführbares Programm mit Quellcodeanweisungen
DE69026208T2 (de) Verfahren zur Erkennung möglicher Fehler einer Programmierung in Assembler Sprache mit Erfassung offensichtlicher Inkonsistenz mit einer vorhergehenden Operation
EP0679995B1 (de) Verfahren und Vorrichtung zur selbstbeschreibenden Datenkodierung
DE112018001257T5 (de) Generieren und überprüfen von ablaufverfolgungen von hardware-anweisungen einschliesslich dateninhalten des arbeitsspeichers
DE69524170T2 (de) Eingebettete Programmablaufinformation zwecks Zielcodemanipulation
DE69219662T2 (de) Verfahren zur On-Line-Modifizierung von komprimierten digitalen Prüfvektoren
DE68924507T2 (de) Verfahren und Gerät zur Markierung von Emulationsanalysezuständen.
EP0721620B1 (de) Tracer-system zur fehleranalyse in laufenden realzeitsystemen
DE3750311T2 (de) Gerät und Verfahren zur Übertragung zwischen Prozessoren.
DE102006019292A1 (de) Modellieren programmierbarer Einrichtungen
DE69712986T2 (de) Programmentwicklungssystem
DE60021092T2 (de) Vorrichtung und Verfahren zur Echtzeitfehlerbeseitigung von Quellprogrammen, insbesondere für DSP

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee