DE69823153T2 - Software-Emulationssystem - Google Patents

Software-Emulationssystem Download PDF

Info

Publication number
DE69823153T2
DE69823153T2 DE69823153T DE69823153T DE69823153T2 DE 69823153 T2 DE69823153 T2 DE 69823153T2 DE 69823153 T DE69823153 T DE 69823153T DE 69823153 T DE69823153 T DE 69823153T DE 69823153 T2 DE69823153 T2 DE 69823153T2
Authority
DE
Germany
Prior art keywords
user process
code
memory
execution
user
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
DE69823153T
Other languages
English (en)
Other versions
DE69823153D1 (de
Inventor
James S. Jr. Campbell Mattson
Lacky V. Sunnyvale Shah
William B. Half Moon Bay Buzbee
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE69823153D1 publication Critical patent/DE69823153D1/de
Application granted granted Critical
Publication of DE69823153T2 publication Critical patent/DE69823153T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Description

  • Die vorliegende Erfindung bezieht sich auf Emulations-Software, beispielsweise für die Verwendung bei Software-Entwicklungstools und dynamischen Instrumentierungs-, Emulations-, Profilier- und Überwachungstools, die die Entwicklung und Wartung von Computersoftware unterstützen.
  • Das Entwickeln und Warten von Computersoftware wurde seit langem als eine schwierige und fehleranfällige Technologie erkannt. Entwickler von Anwendungssoftware und Softwareintegrierer haben nach Kompilierer-Technologietools gesucht, die Instrumentierungsfähigkeiten liefern, um ihre Software zu optimieren. Probleme, wie z. B. Bestimmen, wann Speicherarraygrenzenbedingungen überschritten wurden oder wenn ein Speicher in den C und C++-Programmierspeichern nicht initialisiert ist, bestehen weiterhin und der Bedarf für Verbesserungen bei Softwareprogramm-Überwachungstools ist weit verbreitet.
  • Ein Problem mit herkömmlichen Software-Entwicklungstools ist, dass solche Tools einen statischen Prozess zum Hinzufügen von Instrumentierungs- und Überwachungscodebefehlen verwenden. Die Verwendung eines statischen Prozesses änderte die Ausführung des Objektmoduls von der Art und Weise, wie das Objektmodul ursprünglich ausgeführt worden wäre, auf einen neuen Ausführungsfluss. Andere Prozesse, die durch statische Instrumentierungs- oder Überwachungstools verwendet wurden, haben den ursprünglichen Objektcode des Benutzers erweitert durch Hinzufügen von Schritten zu dem Softwareladeprozess durch Verfahren, wie z. B. die Einfügung einer Instrumentierung durch ein Fehlersuchprogramm (Debugger), oder von Softwarereparaturen durch Hinzufügen von korrigiertem Code. Der zusätzliche Instrumentierungs- und Überwachungscode ermöglicht es dem Programm, das ausgeführt wird, Dinge zu verfolgen, wie z. B. Speichergrenzbedingungen, Cachesimulationen und Softwareprogrammfluss.
  • Eine Softwareanalyse für Zwecke wie z. B. Codeprofilieren, wird manchmal als Codefehlerbeseitigung bezeichnet. Der korrigierte Code wird für Zwecke, wie z. B. das Einfügen von Softwarewartungsänderungen in Objektcodemodule, verwendet. Da der ursprüngliche Laderprozess erweitert wird, um ein Fehlersuchprogramm oder ein Codekorrekturmerkmal zu umfassen, kann das ausführbare Speicherbild den Instrumentierungscode enthalten, der während dem erweiterten Ladeprozess hinzugefügt wurde.
  • Bei den herkömmlichen Typen von Software-Entwicklungstools, wie z. B. Computerinstrumentierungs- und -überwachungstools, tritt die Übersetzung des ursprünglichen Codes entweder an dem ursprünglichen Medienbild oder an dem Punkt auf, an dem der Lader aufgerufen wird. Nach der Computerinstrumentierung und -überwachung gibt es kein ausführbares Bild des ursprünglichen Codes des Benutzers mehr. Daher begrenzte der Stand der Technik die Art, wie Software-Entwicklungstools verwendet wurden, durch Ändern des ausführbaren Bildes des Benutzers mit eingefügtem Instrumentierungs- oder Überwachungscode und erforderte dadurch, dass der Programmzähler sowohl die ursprünglichen Codebefehle des Benutzers als auch die eingefügten Instrumentierungs- oder Überwachungscodebefehle durchläuft.
  • Alle diese Techniken für die Verwendung von statischen Software-Entwicklungstools, die in der Vergangenheit bestanden, haben Probleme, die ihre Effizienz beschränkten. Beispielsweise erfordern statische Instrumentierungs- oder Überwachungstools eine spezielle Verbindung. Da außerdem der Typ und der Umfang von Instrumentierungsbedürfnissen abhängig von dem speziellen Programmverhalten bei der Ausführung variieren kann, müsste der Benutzer, um ein statisches Instrumentierungs- oder Überwachungstool effektiv zu nutzen, regelmäßig anhalten und den Zustand des optimierten Codes betrachten, wobei durch Verwenden einer Reihe von Codeschnappschüssen eine Historie erstellt wird. Dies sind zeitaufwendige Aktivitäten.
  • Außerdem umfasst das statische instrumentierte Objektcodemodul keine Laufzeitinformationen und folglich fügt der Instrumentierungs- oder Überwachungscode Befehle für alle Wege des Softwarecodes ein, obwohl viele Pfade nicht zu einem Teil des tatsächlichen Ausführungsprozesses werden. Die mangelnde Kenntnis des tatsächlichen Ausführungspfads des Objektcodemoduls des Benutzers behindert zusätzlich die Fähigkeit des Programmierers, die Software-Entwicklungstools der Vergangenheit mit dynamisch ladbaren Bibliotheken zu verwenden, wie z. B. der dll-Bibliothek der C-Sprache. Der Benutzer müsste bei der Kompilierzeit spekulieren, welche dynamische ladbaren Bibliotheken während der Ausführung des Benutzercodes aufgenommen würden, und dies kann zu unnötiger Codeerzeugung führen.
  • Das U.S.-Patent Nr. 5,680,584 offenbart ein Simulatorsystem für Codeausführung und Fehlerbeseitigung in einer Mehrfach-Architekturumgebung. Ein System wird betrieben, um zwei Codes, einen X-Code und einen Y-Code zu verarbeiten und auszuführen. Der Y-Code umfasst programmierte Befehle, die entworfen sind, um an einer Maschine ausgeführt zu werden, deren Architektur durch die X-Prozesse simuliert wird.
  • Aus dem Vorhergehenden ist offensichtlich, dass es nach wie vor einen Bedarf gibt, Software-Entwicklungstools zu erzeugen, die den ursprünglichen Ausführungsfluss des Benutzercodes beibehalten. Dieser Bedarf besteht, weil bestehende Software-Entwicklungstools keine Laufzeitinformationen umfassen und daher Effizienzen in Bezug auf das Einfügen einer Instrumentierung, die sich auf den tatsächlichen Benutzercode-Ausführungspfad konzentriert, nicht erreicht werden können. Außerdem können bei herkömmlichen dynamischen Werkzeugen die Laufzeitoptionen, die durch den Benutzer ausgewählt werden, nicht zu dem instrumentierten Code übertragen werden. Dies führt zu einer weniger effizienten Einrichtung eines Instrumentierungscodes. In jüngster Zeit wurden einige dynamische Tools entwickelt, die den Überwa chungscode ändern, aber trotzdem diese Probleme nicht lösen.
  • Diese und andere Probleme mit den herkömmlichen statischen und dynamischen Software-Entwicklungstools haben zu Beschränkungen bei der Weiterentwicklung von Software-Entwicklungstechniken geführt.
  • Die vorliegende Erfindung schafft ein verbessertes Software-Entwicklungstool.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist ein Verfahren zum Emulieren von Software gemäß Anspruch 1 vorgesehen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist ein computerimplementiertes Software-Entwicklungstool gemäß Anspruch 7 vorgesehen.
  • Gemäß einem weiteren Aspekt der vorliegenden Erfindung ist ein Computerprodukt gemäß Anspruch 8 vorgesehen.
  • Das bevorzugte Ausführungsbeispiel liefert ein Software-Entwicklungstool, das eine Form einer dynamischen Instrumentierung oder Überwachung ist und in der gleichen Umgebung ausgeführt wird wie das eines instrumentierten oder überwachten Benutzerprozesses. Dies kann eine Umgebung erzeugen, die es ermöglicht, dass eine dynamische Instrumentierung oder Überwachung bei Laufzeit eingeführt wird, und daher die maximale Menge an Informationen über die Ausführung eines Benutzerprozesses ausnutzt. Beispielsweise kann das bevorzugte Tool den Bedarf an Neukompilierung oder Neuverbindung durch Software-Entwickler vermindern, da die Instrumentierungs- oder Überwachungsänderungen bei der Laufzeit auftreten. Da das Tool vorzugsweise außerdem unter der Benutzerprozessumgebung ausgeführt wird, behält es den Ausführungsfluss des Benutzercodes bei.
  • Emulation ist der Prozess des Einsetzens von Maschinenbefehlen für die ursprünglichen Maschinenbefehle des Benutzers. Der Emulationsprozess führt die äquivalenten Operationen durch, die der Benutzer durchgeführt hätte, und umfasst auch die gewünschten Instrumentierungsoperationen.
  • Statische Software-Entwicklungstools können auch Unterstützung zum Verfolgen der Befehlsausführung eines Programms liefern. Beispielsweise könnte Code geschrieben werden, um die Prozessspeicherspur für die Erfassung eines nicht-initialisierten Codezugriffs zu testen. Ferner könnte ein Zugriff auf Speicherreferenzpuffer erzeugt werden, und speicherempfindliche Prozeduren, wie z. B. Malloc, die die Speicherzuweisung in einer C-Sprachen-Bibliotheksumgebung unterstützt, könnten über Instrumentierung ersetzt werden. Das Ersetzen kann aus dem Austauschen von Maschinenbefehlen oder dem Hinzufügen von Maschinenbefehlen bestehen. Daher kann das statische Tool Speicherpuffer-Zugriffssystemaufrufe vor deren Ausführung erfassen und deren Verhalten aufzeichnen. Code könnte hinzugefügt werden, um die Ergebnisse dieser Instrumentierung anzuzeigen.
  • Bei einem Ausführungsbeispiel ist ein Software-Entwicklungstool vorgesehen, das ein ursprüngliches plattenbasiertes Bild von Benutzercode verwendet, das durch den Computersystemlader, einen Urladungslader und einen Zustandswertlader erweitert wird. Dasselbe kann auch Hilfssteuercode verwenden, der die Benutzerprozessbefehle durch Ausführen äquivalenter Befehle emuliert, und die emulierten Benutzerprozessbefehle durch Hinzufügen von Befehlen instrumentiert. Dasselbe kann eine Prozesssteuerung verwenden, die das Software-Entwicklungstool und den Benutzerprozess in dem Computerspeicher verwaltet und kann die Ausführung des Benutzerprozesses anhalten und wieder aufnehmen.
  • Der Hilfssteuercode kann ein Objektcodemodul sein, das an dem Benutzerprozess angehängt ist, wenn das Tool ausgeführt wird, das Computersystemumgebungsinformationen in dem Speicher beibehält und das gemäß dem Steuerfluss des ausführbaren Benutzercodes ausgeführt wird. Die Kopie des Zustands des ausführenden Programms in dem Speicher umfasst unter anderem den Maschinenzustand von Registern, Bedingungscodes und hardware-spezifische Parameter. Die bevorzugten Ausführungsbeispiele können einen Speicherzustandslader verwenden, um Programmausführungszustandsinformationen, die durch den Urladungscode und den Hilfssteuercode verwendet werden können, in eine temporäre Position zu laden und später neu zu laden.
  • Bei dem bevorzugten Ausführungsbeispiel werden die instrumentierten oder überwachten Befehle in dem gleichen Speicherplatz ausgeführt, der für den Benutzerprozess zugewiesen war, und verwenden den ursprünglichen Code als Anweisungen in der Form von Daten, um die instrumentierten Befehle durch den gleichen Ausführungsfluss zu leiten wie bei dem ursprünglichen Benutzerprozess. Daher ist dieses Ausführungsbeispiel nicht auf die Art und Weise begrenzt, wie herkömmliche Tools durch die Praxis des Änderns des ausführbaren Bildes des Benutzers mit eingefügtem Instrumentierungs- oder Überwachungscode begrenzt waren, die erforderte, dass der Programmzähler sowohl die ursprünglichen Codebefehle des Benutzers als auch die eingefügten Instrumentierungs- oder Überwachungscodebefehle durchläuft.
  • Der Hilfssteuercode kann einen Emulator umfassen, der die Benutzerprozessbefehle ersetzt und Computersystemumgebungsinformationen beibehält, die der Benutzerprozess erzeugt hätte, der bewirkt, dass der modifizierte Benutzerprozess die gleichen Ergebnisse erzeugt als wenn das Emlationstool nicht aufgerufen worden wäre, und der den Benutzerprozesscode als Daten behandelt. Der Hilfssteuercode kann einen Instrumentor umfassen, der innerhalb des Benutzerprozesses ausgeführt wird und Befehle hinzufügt, die die Benutzerbefehle, für Zwecke, wie z. B. Überwachen oder Profilieren, vergrößern können. Schließlich kann der Hilfssteuercode einen Exekutor umfassen, der bestimmt, ob der Emulator oder der Instrumentor aufgerufen werden, durch Verwenden der Befehle des Benutzerprozesses und Behandeln der Befehle als Daten. Die Ersatzbefehle können äquivalent zu den Befehlen des Benutzercodes sein, können aber zusätzliche Prozessüberwachungs- oder Instrumentierungscodebefehle umfassen. Der Hilfssteuercode hängt von der spezifischen Computerhardware und dem spezifischen Computerbetriebssystem ab, auf dem derselbe ausgeführt wird.
  • Die bevorzugten Ausführungsbeispiele können verwendet werden, um die Erzeugung für eine Anzahl von wertvollen Programmanalysetools für Software-Entwicklung und -Wartung zu ermöglichen. Beispielsweise ist die Speicherleckerfassung, für Probleme mit Prozeduren, wie z. B. Malloc and Free, eine wichtige Funktion, die es einem Benutzer ermöglicht, die Software-Entwicklungs- und -Wartungseffizienz zu erhöhen. Free ist ein Betriebssystembefehl, der die Aufhebung der Speicherzuordnung unterstützt, und in der C-Sprachen-Bibliotheksumgebung enthalten ist. Die Programmanalysetools umfassen, sind aber nicht beschränkt auf, Software-Fehlersuchprogrammtools, Softwarespeicherleckerfassungstools, Computerhardware-Cachesimulationstools, Softwareprofiliertools und Software-Ausführungsabdeckungstools.
  • Ein beispielhaftes Verfahren ist, dass der Benutzer Softwaretools für eine dynamische Instrumentierung schreibt. Dies kann eine einfache Einfügung von Instrumentierungscode während dem Ausführungsprozess ermöglichen, die für einen Fachmann auf diesem Gebiet gut bekannt sind, wie z. B. dynamisches Verbinden. Die Einfügung von Instrumentierungscode ermöglicht das Abfangen von Systemunterstützungsanforderungen, was ohne weiteres ein neues Verfolgen und eine neue Analyse des Ausführungsflusses von Softwarebefehlen ermöglicht, und auch einen inkrementalen Ausführungsfluss ermöglicht. Das bevorzugte Ausführungsbeispiel ermöglicht es dem Benutzer, eine Funktionalität zu erzeugen, wie z. B. Speicherprüfen und Einfügen von Überwachungspunkten für eine verfeinerte Analyse der Befehlsausführung. Überwachungspunkte sind Softwarebefehle, die anzeigen, wenn sich ein spezifisches Datum in einem Benutzeranwendungs-Softwareprogramm ändert. Ein Fachmann auf diesem Gebiet wird die Anwendung des dynamischen Verbindens von Befehlen durch die Verwendung der beschriebenen Ausführungsbeispiele erkennen.
  • Da das System dynamisch sein kann, enthält der instrumentierte Objektcode Informationen über den tatsächlichen Ausführungspfad, wenn der erweiterte Lader aufgerufen wird. Da der Ausführungspfad bekannt ist, muss der Instrumentierungs-, Profilier- oder Überwachungscode nur auf die notwendigen dynamisch ladbaren Bibliotheken zugreifen, wie z. B. die C-Programmiersprachenbibliothek dll.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung ist nachfolgend beispielhaft mit Bezugnahme auf die beiliegenden Zeichnungen beschrieben. Es zeigen:
  • 1 ein Blockdiagramm des Kompilierzeit- und Laufzeit-Computerausführungsprozesses;
  • 2A bis 2D Blockdiagramme der Computerspeicherkonfiguration während der Ausführung;
  • 3A bis 3C Blockdiagramme des modifizierten Benutzerprozesses und der Prozesssteuerung;
  • 4A ein Flussdiagramm des Prozesses, der verwendet wird, um das Emulationstool in dem Benutzerprozess einzufügen;
  • 4B ein Blockdiagramm von Datenstrukturen, die kombiniert werden, um den ausführbaren Benutzerprozesscode zu bilden; und
  • 4C ein Blockdiagramm der Änderungen des Benutzerprozessspeichers während der Ausführung.
  • Das bevorzugte Ausführungsbeispiel, das hierin beschrieben ist, ist in der Form eines Software-Entwicklungstools für die dynamische Instrumentierung oder Überwachung eines Benutzerprozesses und wird unter der gleichen Computerumgebung ausgeführt wie diejenige des Benutzerprozesses und behält dadurch den Fluss der Ausführung des Benutzercodes bei. Herkömmliche Software-Entwicklungstools haben eine Kopie des ausführbaren Benutzerprozessbildes erzeugt, und des eingefügten Instrumentierungscodes in dem Computerspeicher, was zu einem ausführbaren Bild geführt hat, das den Ausführungsfluss des ursprünglichen Benutzerobjektmoduls nicht beibehalten hat.
  • Dieses Ausführungsbeispiel ist ein dynamisches Software-Entwicklungstool, das an der Laufzeitstufe der Kompilierung und Ausführung eines Softwareprogramms eingeführt wird.
  • Dasselbe emuliert Softwarebefehle durch Erkennen von Befehlen, die geändert werden müssen, um nach Bedarf ausgeführt zu werden, und durch Ersetzen derselben mit äquivalenten Befehlen, die ohne weiteres erweitert werden können mit Instrumentierungs- oder Überwachungsbefehlen zum Verbessern des Software-Entwicklungsprozesses. Dasselbe kann die Ausführung eines Benutzerprozesses anhalten und wieder aufnehmen, und dadurch Instrumentierungs- oder Überwachungscode in den Benutzerprozess einfügen. Während der Laufzeitstufe wird ein Computermaschinencode erzeugt, der unter Verwendung der Hardwareregister ausgeführt wird. Dieses Ausführungsbeispiel kann eine Software-Entwicklungsanalyse verbessern durch dynamisches Instrumentieren oder Überwachen des Benutzerprozesses in der Benutzerprozesscomputerumgebung und unter dem Benutzerprozessausführungsfluss.
  • Das bevorzugte Ausführungsbeispiel arbeitet in einem Computerspeicher, der zusätzlich zu dem dynamischen Ausführungsverfahren eine schnellere Emulation als bei dem Stand der Technik ermöglicht.
  • Außerdem kann das beschriebene Ausführungsbeispiel durch Behandeln der Benutzerprozessbefehle als Daten eine Vielzahl von Codesequenzen flexibel emulieren. Herkömmliche Emulationswerkzeuge waren darauf beschränkt, an einzelnen Codeeinheiten, wie z. B. Software-Prozeduren, zu arbeiten. Ein Fachmann auf diesem Gebiet wird erkennen, dass das Emulationstool Prozedurgrenzen überqueren kann, während es Sequenzen von Benutzerprozesscode ausführt, da das beschriebene Ausführungsbeispiel unter den Benutzerprozessbefehlen arbeitet und Benutzerprozessbefehle als Daten behandelt.
  • Das Software-Entwicklungstool ist eine Form einer Computersystem-Kompiliertechnologie. Für eine allgemeine Erörterung bestehender Kompilier- und Emulationstooltechnologie siehe Principles of Compiler Design, von Alfred V. Aho und Jeffrey D. Ullman (Addison-Wesley, 1977).
  • Emulation
  • Eine Emulation umfasst das Modellieren eines Computers in Software. Das beschriebene Ausführungsbeispiel emuliert den ursprünglichen Anwendungscode durch Abrufen, Decodieren und Übersetzen von Abschnitten von Code in Befehle zum Modellieren der ursprünglichen Computerumgebung in Software. Während der Ausführung auf einigen Betriebssystemen, wie z. B. UnixTM, kann ein Prozess einen neuen Prozess hervorbringen, der die Steuerung des Ausführungsflusses übernehmen kann und daher kann es sein, dass der ursprüngliche Prozess die Ausführung nicht mehr steuert. Der Systemaufruf und die Signalbefehle sind Befehle, die einen neuen Prozess hervorbringen können. Das System kann Systemaufrufe und Signale abfangen und dieselben nach Bedarf übersetzen, um den emulierten Ausführungsfluss in dem ursprünglichen Benutzerprozess beizubehalten.
  • Während der herkömmlichen Ausführung wird durch den Benutzerprozess auf die echten Hardware-Registerpositionen zugegriffen. Beispielsweise kann das Hinzufügen von 2 + 3 und das Speichern des Ergebnisses in einer herkömmlichen Hardware-Registerdatei durch „ADDr7, r8, r31" dargestellt werden. Diese Darstellung wäre genau, falls das Register 7 den Wert „2" enthielt, und das Register 8 den Wert „3" enthielt, und falls die Gesamtzahl „5" in dem Register 31 gespeichert würde. Die herkömmliche Hardware-Registerdatei würde das folgende Ergebnis der „ADD"-Operation enthalten.
  • Figure 00110001
  • Eine Emulations-Registerdatei für einen Computer mit zweiunddreißig Hardware-Registern kann durch eine Erklärung einer Arraydatenstruktur „reg[32]" dargestellt werden. Hier enthält das Array „reg" zweiunddreißig lange Ganzzahlwerte. Das „cpu"-Programm stellt eine Emulationsregisterdatei dar. Angenommen, dass cpu.reg[7] 2 enthält, und cpu.reg[8] 3 enthält, werden die Befehle „load", „load", „add" und „store" die Werte von cpu.reg[7] und cpu.reg[8] laden, deren Werte addieren und die Summe in cpu.reg[31] speichern. Eine beispielhafte „cpu"-Emulationsregisterdatei folgt.
  • Figure 00120001
  • Das System kann in einem Computer als ein Software-Entwicklungstool für Emulation implementiert werden, das Befehle in einem Benutzerprozess ersetzt und in dem Speicher bei Laufzeit ausgeführt wird. Der Speicher kann Computerumgebungszustandswerte beibehalten, die die Inhalte der Hardwareregister, Bedingungscodes zum Anweisen von Ausführungsstufen und hardwarespezifische Parameter zum Anweisen des Ausführungsprozesses umfassen.
  • Das System kann auch arbeiten, bevor der Benutzerprozess mit der Ausführung begonnen hat. Wenn die Ausführung der vorliegenden Erfindung der Benutzerprozessausführung vorangeht, lädt der Zustandswertlader Anfangszustandsregisterwerte für den Urladungslader in den Computerspeicher, anstatt die aktuellen Zustandsregisterwerte zu laden. Der Zustandswertlader behält die Anfangszustandsregisterwerte für den Urladungslader bei, um dieselben später in einen Speicher des Benutzerprozesses neu zu laden.
  • Ein alternatives Ausführungsbeisiel der vorliegenden Erfindung für die Verwendung, wenn der Benutzerprozess mit der Ausführung begonnen hat, kann das Aufnehmen des Urladungsladers und des Urladungs-Softwarecodes in dem Compu tersystem-Betriebssystemlader umfassen. Da der Computersystem-Betriebssystemlader die anfänglichen Benutzerprozesszustandswerte für sowohl für die Hardware-Register als auch den Computerspeicher einstellt, ist es für einen Fachmann auf diesem Gebiet klar, dass eine spezifische Computerimplementierung integriert werden könnte, um die Urladungsfunktionen durchzuführen.
  • Dynamische Software-Entwicklungstools
  • Computersoftware-Entwicklungstools wurden bei Anwendungen verwendet, die rückkopplungsgerichtete Optimierung umfassen, unter Verwendung von dynamischer oder statischer Neukompilierung, Hardwaresimulatoren und Softwarefehlerbeseitigung. Eine rückkopplungsgerichtete Optimierung ist der Prozess, durch den Informationen über kritische Ausführungspfade in einem Softwareprogramm an ein Computerinstrumentierungs-, Profilier- oder Überwachungstool geliefert werden, für die Verwendung bei weiteren Instrumentierungstechniken durch das Tool. Die rückkopplungsgerichteten Informationen können über eine dynamische oder statische Neukompilierung des Benutzercodes in den Optimierungsprozess eingebaut werden. Das heißt, der Instrumentierungscode kann auf eine inkrementale Weise neu erzeugt und neu ausgeführt werden, mit entsprechenden Änderungen zum Optimieren der Ausführung des Objektcodemoduls. Die Neuerzeugung basiert auf den Ergebnissen der vorhergehenden Iteration. Bei dem beschriebenen Ausführungsbeispiel wird das Profilieren oder Überwachen des instrumentierten Codes dynamisch durchgeführt, d. h., während das Programm inkremental ausgeführt wird und keine spezielle Neukompilierung und Neuverbindung erfordert.
  • Die Softwarefehlerbeseitigung wird durch den Prozess des Einfügens eines spezifischen Instrumentierungs- oder Überwachungscodes aktiviert, der Informationen protokolliert, die sinnvoll sind bei der Software-Entwicklungsanalyse für spezifische Computerbefehle, von denen bekannt ist, dass dieselben für Softwareprogrammierfehler anfällig sind. Prozeduren, die die Verwendung von Computerspeicher manipulieren, können unbeabsichtigt Speicherpositionen verändern, die durch andere Befehle verwendet werden, und dadurch die Grenzbedingungen von zugewiesenen Speicherpositionen überschreiten. Daher sind Prozeduren, die die Verwendung von Computerspeicher manipulieren, wie z. B. Mallok oder Free, gute Kandidaten für eine spezielle Softwarefehlerbeseitigungsüberwachung.
  • Hardwaresimulierung ist der Prozess, durch den das Softwareprogramm mit einem Instrumentierungs- oder Überwachungstoolcode neu-kompiliert wird, zum Erzeugen eines Objektmoduls des Benutzercodes, das gemäß Computermaschinenbefehlen oder Merkmalen einer anderen Computerumgebung als der, in der der Code ursprünglich entwickelt wurde, ausgeführt wird. Die andere Computerumgebung ist typischerweise eine, die im wesentlichen ähnlich ist wie die ursprüngliche Computerumgebung. Der Prozess des Erzeugens von Objektcode, der darauf abzielt, auf einem anderen Computer zu laufen, ermöglicht die Simulation der Ausführung auf anderen Hardwareplattformen. Das heißt, die computerspezifischen Hardwaremerkmale werden in dem Instrumentierungs- oder Überwachungstoolcode erzeugt und in den Anwendungscode des Benutzers eingefügt. Bei dem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung ändert der Instrumentor während der Hardwaresimulation Befehle, die durch den Emulator erzeugt werden. Der erweiterte Benutzerprozess wird dann ausgeführt zum Zweck des Analysierens des Flusses von Benutzeranwendungsbefehlen auf der ursprünglichen Maschine auf eine Weise, wie dieselbe in einer anderen Computerumgebung ausgeführt werden würde.
  • Einige Beispiele von Hardwaresimulationsmerkmalen umfassen, sind aber nicht beschränkt auf, die Analyse von Bus- und Speicherlatenzzeit und die Analyse der Cache-Architektur, wie z. B. satzadressiert (set associative), Direktabbil dung, mehrere Cache-Ebenen und Prozessorverbindungsvernetzung. Ein Fachmann auf diesem Gebiet wird die Verwendung von Hardwaresimulation für die Analyse dieser Merkmale erkennen.
  • Bei 1 verwendet das Ausführungsbeispiel der dargestellten Softwareumgebung ein Quellprogramm 112, das in einer Computerprogrammiersprache, wie z. B. C oder C++, erzeugt sein kann. Das Quellprogramm wird durch einen Kompilierer 114 manipuliert, der Programmiersprachenbefehle in Maschinencodebefehle übersetzt. Die resultierenden Maschinencodebefehle werden häufig als Objektcode bezeichnet und sind hierin durch Benutzerprozessobjektcode 113 dargestellt. Der Objektcode umfasst Befehle zum Ausführen auf einem spezifischen Computerprozessor. Daher ist der Benutzerprozessobjektcode 113 in einem Format, das durch einen Verbinder 116 übersetzt werden kann. Um den Objektcode auszuführen, muss derselbe mit ein oder mehreren Objektcodemodulen kombiniert werden, um einen ausführbaren Maschinencode zu erzeugen, und ist hierin durch einen ausführbaren Benutzerprozesscode 118 dargestellt. Dieser Kombinierprozess wird als Verbinden bezeichnet. Wenn der Verbinder 116 den Objektcode verarbeitet, löst er alle Verbindungsreferenzen und erzeugt einen ausführbaren Code.
  • In 1 ist ein Lader 120 gezeigt, der den Ausführungsprozess aufruft, der hierin in Schritt 122 dargestellt ist, durch Verwenden des ausführbaren Benutzerprozesscodes 118 und des ausführbaren Softwareentwicklungscodes 115. Die Aktivität des Laders 120 stellt den Übergang von dem Kompilierungsprozess zu dem Laufzeitprozess dar. Bei einem Ausführungsbeispiel der vorliegenden Erfindung kann während der Laufzeit ein Test ausgeführt werden, um zu bestimmen, ob ein Profilierwerkzeug aktiviert ist 124, das Computermaschinenpegelinformationen verwendet, um den Quellprogrammausführungsweg einzustellen. Bei einem anderen Ausführungsbeispiel der vorliegenden Erfindung kann ein Test ausgeführt werden, um zu bestimmen, ob ein Prozessüberwachungs tool aktiviert ist 126, das Benutzerebeneninformationen verwendet, um die Programmausführung zu überwachen. Falls das Profiliertool aktiviert ist 124, werden die Maschinenebenenergebnisse der Ausführung für eine spätere Verarbeitung 129 protokolliert, und wie es in Schritt 128 dargestellt ist, wird die Ausführung inkremental fortschreiten. Falls das Prozessüberwachungstool aktiviert ist 126, werden die Benutzerebenenergebnisse der Ausführung für eine spätere Verarbeitung 127 protokolliert, und wie es in Schritt 128 dargestellt ist, wird die Ausführung inkremental fortschreiten. Der inkrementale Ausführungsprozess 128 umfasst das Nehmen von Rückkopplungsinformationen von den protokollierten Ergebnissen des Profiliertools und des Verarbeitungsüberwachungstools. Falls keines der Tools aktiviert ist, wird die Verarbeitung des Quellenprogramms normal fortschreiten 128, um durch das Computersystem ausgeführt zu werden.
  • In 2A2D ist die ändernde Computerspeicherkonfiguration dargestellt. In 2A stellen der Benutzerprozessanfangsblock 200, die Benutzerprozessbefehle 202, die Benutzerprozessdaten 204 und der verbleibende freie Raum 206 vor dem Aufrufen des Emulationstools eine Benutzerprozessspeicherkonfiguration dar. In 2B wurde der Urladungslader 208 aufgerufen, und hat einen Teil des freien Platzes 206 besetzt. Der Benutzerprozessanfangsblock 200, die Benutzerprozessbefehle 202 und die Benutzerprozessdaten 204 verwenden den Speicher eines Benutzerprozesses 300 gemeinschaftlich mit dem Urladungslader 208. Nachdem der Urladungslader 208 mit der Ausführung beginnt, wird der Urladungssoftwarecode 210 aufgerufen, wie es in 2C gezeigt ist. Der Benutzerprozessanfangsblock 200, die Benutzerprozessbefehle 202 und die Benutzerprozessdaten 204 verwenden weiterhin einen Speicher des Benutzerprozesses 300 gemeinschaftlich, nun mit dem Urladungssoftwarecode 210. Der Urladungssoftwarecode 210 hat einen Teil des Speichers des verbleibenden freien Platzes 206 übernommen, um den Hilfssteuercode 212 zu laden.
  • Schließlich wurde in 2D der Hilfssteuerecode 212 aufgerufen. Der Hilfssteuercode 212 umfasst einen Exekutor 214, einen Emulator 216 und einen Instrumentor 218. Der Emulator 216 behält die Registerzustandswerte bei, die der Benutzerprozess ohne das Aufrufen des Software-Entwicklungstools erzeugt haben würde. Der Emulator 216 ersetzt auch die Befehle des Benutzerprozesses 300, während er die gleichen Ergebnisse erzielt, die ohne den Aufruf des Software-Entwicklungstools aufgetreten wären, und behandelt den Benutzerprozesscode als Daten. Der Instrumentor 218 wird in den Benutzerprozess 300 ausgeführt und fügt Befehle hinzu, die die Benutzerbefehle für Zwecke, wie z. B. Überwachen oder Profilieren, erweitern können. Schließlich bestimmt der Exekutor 214 unter Verwendung der Befehle des Benutzerprozesses 202 und der Benutzerprozessdaten 204, die beide als Daten behandelt werden, ob der Emulator 216 oder der Instrumentor 218 aufgerufen werden soll. Der Hilfssteuercode 212 und seine Elemente arbeiten durch Verwenden des Benutzerprozessanfangsblocks 200. Der Hilfssteuercode 212 und seine Elemente haben mehr als den verbleibenden freien Platz 206 übernommen.
  • Das System kann auch einen Zustandswertlader umfassen, der Zustandsregisterwerte für den Benutzerprozess in den Computerspeicher lädt und die Zustandsregisterwerte für den Benutzerprozess für späteres Neuladen in den Speicher des Benutzerprozesses beibehält. Wenn der Benutzerprozess für die Ausführung aufgerufen wird, lädt der Zustandswertlader zusätzlich Zustandsregisterwerte für den Lader in den Computerspeicher und behält die Zustandsregisterwerte für den Lader für späteres Neuladen in den Speicher des Benutzerprozesses bei.
  • Bei 3A3C sind die Inhalte des Benutzerprozesses während der Ausführung dargestellt. In 3A stellt die Prozesssteuerung 302 die Steuerung über den Benutzerprozess 300 her, durch Anhalten der Ausführung des Benutzerprozes ses 300. Der Zustandswertlader lädt die Zustandsregisterwerte für den Benutzerprozess in den Computerspeicher. Die Prozesssteuerung 302 ruft dann den Urladungslader 208 auf, und der Zustandswertlader lädt die Urladungsladerzustandswerte 304 neu in den Speicher des Benutzerprozesses 300. Wenn der Urladungslader 208 und die Urladungsladerwerte 304 in den Benutzerprozess 300 in 3A eingefügt werden, verwenden sie den Benutzerprozess 300 gemeinschaftlich mit dem ausführbaren Benutzerprozesscode und Daten 308. In 3B lädt der aufgerufene Urladungslader 208 den Urladungssoftwarecode 210 in den Speicher des Benutzerprozesses 300 und verwendet die Urladungsladerzustandswerte 304 zum Ausführen des Urladungssoftwarecodes 210. Die Prozesssteuerung 302 und der ausführbare Benutzerprozesscode und Daten 308 werden weiterhin in dem Benutzerprozess 300 ausgeführt.
  • Bei dem Übergang von 3B zu 3C lädt der Zustandswertlader die Zustandsregisterwerte des Benutzerprozesses 310 neu in den Speicher des Benutzerprozesses 300. Daraufhin gibt die Prozesssteuerung 302 die Steuerung des Benutzerprozesses 300 frei und die Ausführung in dem Benutzerprozess 300 wird wieder aufgenommen. Der Urladungssoftwarecode 210 wird in dem Benutzerprozess 300 ausgeführt und hängt den Hilfssteuercode 212 an den Benutzerprozess 300 an. Der ausführende Urladungssoftwarecode 210 in dem Benutzerprozess 300 überträgt die Ausführung zu dem Hilfssteuercode 212 in dem Benutzerprozess 300.
  • In 3C ersetzt der Hilfssteuercode 212 Befehle in dem Benutzerprozess unter Verwendung der Zustandswerte 310 in dem Speicher des Benutzerprozesses 300. Die Elemente des Hilfssteuercodes 212 umfassen den Exekutor 214, den Emulator 216 und den Instrumentor 218. Der Hilfssteuercode 212 umfasst einen Emulator 216, der die Registerzustandswerte beibehält, die der Benutzerprozess 300 ohne das Einfügen des Software-Entwicklungstools erzeugt hätte. Der Emulator 216 führt auch ersetzte Befehle aus unter Verwendung des Benutzerprozesscodes und der Daten 308, die als Daten behandelt werden, um die gleichen Ergebnisse zu erzeugen, als ob das Software-Entwicklungstool nicht eingefügt worden wäre. Der Hilfssteuercode 212 kann auch einen Instrumentor 218 umfassen, der in dem Benutzerprozess 300 ausgeführt wird, und Befehle hinzufügt, die dem Benutzer Befehle für Zwecke, wie z. B. Überwachen oder Profilieren, vergrößern können. Schließlich kann der Hilfssteuercode 212 einen Exekutor 214 umfassen, der bestimmt, ob der Emulator 216 oder der Instrumentor 218 aufgerufen werden, unter Verwendung der Befehle des Benutzerprozesses 308, die als Daten behandelt werden. Der Hilfssteuercode 211 wird mit den neugeladenen Zustandswerten des Benutzerprozesses 310 ausgeführt und verwendet den ausführbaren Benutzerprozesscode und Daten 308 als Daten.
  • Bei 4A umfasst der Prozess, der durch das Emulationstool verwendet wird, bei Schritt 400 das Beginnen des Benutzerprozesses 300 und bei Schritt 402 das Aufrufen des Emulationstools. Bei Schritt 404 hält die Prozesssteuerung 302 den Benutzerprozess 300 an, was die Aktion von dem Emulationstool einleitet. Bei Schritt 406 erfasst der Zustandswertlader den Maschinenzustand der Registerwerte für den Benutzerprozess 300 und für späteres Neuladen in den Speicher des Benutzerprozesses 300. Nachdem die Steuerung des Benutzerprozesses 300 durch Anhalten des Benutzerprozesses 300 übernommen wurde, ruft die Prozesssteuerung 302 nun bei Schritt 408 den Urladungslader 208 auf, und der Zustandswertlader lädt die Urladungsladerzustandswerte 304. Bei Schritt 410 lädt der Urladungslader 208 dann einen Urladungssoftwarecode 210 in ungenutzte Abschnitte des Speichers des Benutzerprozesses 300. Bei Schritt 412 lädt der Zustandswertlader 310 die Zustandswerte des Benutzerprozesses 300 neu in den Speicher des Benutzerprozesses 300. Bei Schritt 414 gibt die Prozesssteuerung 302 die Steuerung des Benutzerprozesses 300 frei. Der Urladungssoftwarecode 210 wird in den Benutzerprozess ausgeführt und hängt den Hilfssteuercode 212 an den Benutzerprozess 300 an. Der ausführende Urladungssoftwarecode 210 überträgt die Ausführung zu dem Hilfssteuercode 212 in dem Benutzerprozess 300.
  • Der freigegebene Benutzerprozess 300 nimmt nun die Ausführung wieder auf und bei Schritt 416 modifiziert der Hilfssteuercode 212 den Benutzerprozess 300, so dass der Benutzerprozess 300 die Ausführung in dem Hilfssteuercode 212 unter Verwendung des Benutzerprozesscodes als Daten und der Benutzerprozesszustandswerte 310 fortsetzt. Bei Schritt 418 umfasst das System Hilfssteuercode 212, der Befehle in dem Benutzerprozess 300 ersetzt.
  • Der Speicher des Benutzerprozesses 300 erfährt eine Veränderung während der Ausführung des Emulationstools. In 4B sind die Änderungen bei dem Speicher des Benutzerprozesses 300 dargestellt. Bei Schritt 426 wird der Urladungslader 208 in den unbesetzten freien Raum 206 des Speichers des Benutzerprozesses 300 geladen. Bei Schritt 428 wird der Urladungssoftwarecode 210 in den unbesetzten freien Raum 206 des Speichers des Benutzerprozesses 300 geladen. Bei Schritt 430 wird der Hilfssteuercode 212 in den nicht-besetzten freien Platz 206 des Speichers des Benutzerprozesses 300 geladen, und die Benutzerprozesszustandswerte werden neu in den Benutzerprozess 300 geladen 310.
  • Die Dateistrukturen in 4C stellen dar, dass alle der Benutzerprozessobjektmodule 420 mit den Hilfssteuercodeobjektmodulen 422 kombiniert sind, um ein kombiniertes ausführbares Benutzerprozesscodebild 424 zu erzeugen. Die Computerdateien werden in dem Speicher ausgeführt und umfassen Zustandsregisterwerte, Daten und Code, durch den dieselben ausgeführt werden. Das kombinierte ausführbare Bild 424 ermöglicht es, dass das Software-Entwicklungstool unter dem Benutzerprozess-300-Ausführungsfluss ausgeführt wird. Das kombinierte ausführbare Bild 424 wird ausgeführt durch Verwenden von Zustandsregisterwerten des Benutzerprozesscodes, die modifiziert wurden, um die Ausführung der Hilfssteuercodemodule 422 in dem Speicher des Benutzerpro zesses zu ermöglichen. Das Objektmodul des Hilfssteuercodes 422 ersetzt Befehle für Benutzerprozessbefehle und behält Computerzustandsregisterwerte bei, die der Benutzerprozess ohne das angehängte Hilfssteuercodemodul 422 erzeugt hätte. Das Objektmodul des Hilfssteuercodes 422 führt ferner zumindest einen Befehl aus, wodurch die ausgeführten Ergebnisse die gleichen Ergebnisse sind, die ohne das Einfügen des Software-Entwicklungstools erzeugt worden wären.
  • Obwohl ein spezifisches Ausführungsbeispiel der Erfindung beschrieben und dargestellt wurde, soll die Erfindung nicht auf die spezifischen Formen oder Anordnungen von Teilen beschränkt werden, die so beschrieben und dargestellt sind.

Claims (8)

  1. Ein computerimplementiertes Verfahren zum Emulieren von Software, das die Programmausführung während der Laufzeit ändert, und das einen Zusatzsteuercode an einem Benutzerprozess anhängt, der im Computerspeicher geladen ist, wobei das Verfahren folgende Schritte umfasst: a. Bewirken (400) einer Ausführung zumindest eines Codebefehls von dem Benutzerprozess (300), der in dem Computerspeicher geladen ist, und Anhalten (404) der Ausführung des Benutzerprozesses (300); b. Laden (406) von Zustandswerten für den angehaltenen Benutzerprozess (300) in den Computerspeicher und Bewegen der geladenen Zustandswerte für den Benutzerprozess (300) in nicht besetzte Bereiche des Speichers für den Benutzerprozess (300); c. Laden (408) von Urladungssoftwarecode (210) in nicht besetzte Bereiche des Speichers für den Benutzerprozess (300); d. Wiederherstellen (412) der modifizierten Zustandswerte für den Benutzerprozess (300) und Aufheben (414) der Anhaltung des Benutzerprozesses (300); e. Anhängen des Zusatzsteuercodes (312) an den Benutzerprozess (300) durch den Urladungssoftwarecode (210) und Übertragen der Ausführung an den Zusatzsteuercode in dem Benutzerprozess; und f. Herstellen einer Emulationsumgebung durch den Zusatzsteuercode (212), die zumindest einen der Benutzerprozessbefehle ersetzt und ausführt, durch Verwenden der Zustandswerte des Benutzerprozesses (300) und durch Behandeln der Benutzerprozessbefehle als Daten, und Beibehalten der Registerzustandswerte, die der Benutzerprozess (300) ohne den angehängten Zusatzsteuercode (212) erzeugt hätte.
  2. Ein Verfahren gemäß Anspruch 1, das folgende Schritte umfasst: a. Laden von Prozessüberwachungscodebefehlen in den Benutzerprozess (300), die gemeinsam mit den Benutzerprozesscodebefehlen ausgeführt werden, wodurch die gemeinsame Ausführung durch den Zusatzsteuercode bewirkt wird; und b. Sammeln der Ergebnisse der Ausführung des Benutzerprozesscodebefehls und der Prozessüberwachungscodebefehle.
  3. Ein Verfahren gemäß Anspruch 1 oder 2, bei dem, wenn der Zusatzsteuercode (212) eine Emulationsumgebung für den Ersatz und die Ausführung von zumindest einem Benutzerprozessbefehl erstellt, zumindest ein Benutzerprozessbefehl ausgeführt wird, wie er auf einer anderen Computermaschine ausgeführt werden würde.
  4. Ein Verfahren gemäß einem der vorhergehenden Ansprüche, das folgende Schritte umfasst: a. Laden von Ausführungsprofiliercode in dem Benutzerprozess und gemeinsames Ausführen des Benutzerprozesses und des Profiliercodes, wobei die gemeinsame Ausführung durch den Zusatzsteuercode (212) bewirkt wird; und b. Bewirken einer weiteren Ausführung des Zusatzsteuercodes (212) unter Verwendung der Ergebnisse der gemeinsamen Ausführung.
  5. Ein Verfahren gemäß einem der vorhergehenden Ansprüche, das das Testen des Speicherzustands des Benutzerprozesses (300) umfasst, um einen nicht initialisierten Codezugriff zu erfassen.
  6. Ein Verfahren gemäß einem der Ansprüche 1 bis 4, das das Testen des Speicherzustands des Benutzerprozesses (300) umfasst, um den Speicherzustand für speicherempfindliche Prozeduraufrufe zusammen.
  7. Ein computerimplementiertes Softwareentwicklungstool für die Emulation, das Befehle in einem Benutzerprozess (300) ersetzt, der im Speicher bei Laufzeit ausgeführt wird, und bei dem der Speicher Zustandswerte beibehält und das Computersystem Zustandsregisterwerte beibehält, wobei das Tool folgende Merkmale umfasst: a. einen Zusatzsteuercode (212), der wirksam ist, um Befehle in dem Benutzerprozess zu ersetzen, unter Verwendung der Zustandswerte in dem Speicher des Benutzerprozesses; b. einen Lader (208), der wirksam ist, um die Speicherzustände des Benutzerprozesses zu manipulieren, was die Ausführung des Zusatzsteuercodes (212) in dem Benutzerprozess ermöglicht, und den Zusatzsteuercode (212) in den Benutzerprozess lädt; c. einen Zustandswertlader, der, wenn er aufgerufen wird, Zustandsregisterwerte für den Benutzerprozess in den Computerspeicher lädt und die Zustandsregisterwerte für den Benutzerprozess für späteres Neuladen in den Speicher des Benutzerprozesses beibehält; und wenn die Benutzerprozessausführung aufgerufen wird, lädt der Zustandswertlader Registerwerte für den Lader in den Computerspeicher und behält die Zustandsregisterwerte für den Lader für ein späteres Neuladen in dem Speicher bei; d. eine Prozesssteuerung (302), die wirksam ist, um eine Steuerung über den Benutzerprozess herzustellen und eine Steuerung des Benutzerprozesses aufzuheben, und wenn die Prozesssteuerung (302) eine Steuerung über den Benutzerprozess durch Anhalten der Ausführung des Benutzerprozesses herstellt, lädt der Zustandswertlader die Zustandsregisterwerte für den Benutzerprozess in den Computerspeicher, wobei die Prozesssteuerung den Lader aufruft und der Zustandswertlader die Zustandswerte des Laders neu lädt; e. wobei, wenn die Prozesssteuerung (302) die Steuerung des Benutzerprozesses aufhebt und die Ausführung des Benutzerprozesses wieder aufnimmt, der Zustandswertlader die Zustandsregisterwerte des Benutzerprozesses neu in den Speicher des Benutzerprozesses lädt, der Lader den Zusatzsteuercode (212) ausführt und an den Benutzerprozess anhängt, und der Lader (208) die Ausführung des Benutzerprozesses an den Zusatzsteuercode (212) überträgt; und f. wobei der Zusatzsteuercode (212) einen Emulator (216), der wirksam ist, um die Registerzustandswerte beizubehalten, die der Benutzerprozess ohne die Einfügung des Softwareentwicklungstools erzeugt hätte, um zumindest einen Befehl auszuführen, und um die gleichen Ergebnisse zu erzeugen, die ohne die Einfügung des Softwareentwicklungs tools erzeugt worden wären, einen Instrumentor (218), der wirksam ist, um in dem Benutzerprozess ausgeführt zu werden und Befehle zu dem Benutzerprozess hinzuzufügen, und ein Ausführelement (214) umfasst, das wirksam ist, um zu bestimmen, ob der Emulator (216) oder der Instrumentor (218) aufgerufen werden, unter Verwendung der Befehle des Benutzerprozesses, die als Daten behandelt werden.
  8. Ein Computerprodukt zum Anhängen von Zusatzsteuercode (212) an einen ausführenden Benutzerprozess (330), der in einem Computerspeicher geladen ist, das ein Programmspeichermedium umfasst, wobei: a. ein computerlesbarer Programmcode ausführbar ist, um die Ausführung für zumindest einen Codebefehl von dem Benutzerprozess (300) zu bewirken, der in dem Computerspeicher geladen ist; b. ein computerlesbarer Programmcode wirksam ist, um die Ausführung des Benutzerprozesses (300) anzuhalten; c. ein computerlesbarer Programmcode wirksam ist, um Zustandswerte für den Benutzerprozess (300) in den Computerspeicher zu laden und die Zustandswerte für den Benutzerprozess (300) in nicht besetzte Bereiche des Speichers des Benutzerprozesses zu bewegen; d. ein computerlesbarer Programmcode wirksam ist, um Urladungssoftwarecode (210) in die nicht besetzten Bereiche des Speichers des Benutzerprozesses (300) zu laden, zum Anhängen des Zusatzsteuercodes (212) an den Benutzerprozess (300); e. ein computerlesbarer Programmcode wirksam ist, um die Ausführung des modifizierten Benutzerprozesses (300) wieder aufzunehmen, und die Ausführung des Benutzerprozesses (300) an den Zusatzsteuercode (212) weiterzugeben; und f. ein computerlesbarer Programmcode wirksam ist, um durch den Zusatzsteuercode (212) eine Emulationsumgebung herzustellen, die zumindest einen Benutzerprozessbefehl ersetzt und ausführt, unter Verwendung der Zustandswerte, die in die nicht besetzten Bereiche des Speichers des Benutzerprozesses (300) geladen sind, unter Verwendung der Benutzerprozessbefehle als Daten, um die Ersatzbefehle zu erzeugen, und Protokollieren der Registerzustandswerte, die der Benutzerprozess ohne den angehängten Zusatzsteuercode (212) erzeugt hätte.
DE69823153T 1997-12-23 1998-11-18 Software-Emulationssystem Expired - Fee Related DE69823153T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US996963 1997-12-23
US08/996,963 US5911073A (en) 1997-12-23 1997-12-23 Method and apparatus for dynamic process monitoring through an ancillary control code system

Publications (2)

Publication Number Publication Date
DE69823153D1 DE69823153D1 (de) 2004-05-19
DE69823153T2 true DE69823153T2 (de) 2004-10-14

Family

ID=25543484

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69823153T Expired - Fee Related DE69823153T2 (de) 1997-12-23 1998-11-18 Software-Emulationssystem

Country Status (4)

Country Link
US (1) US5911073A (de)
EP (1) EP0926592B1 (de)
JP (1) JPH11232138A (de)
DE (1) DE69823153T2 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
US7013456B1 (en) * 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US8121828B2 (en) 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6820258B1 (en) * 2000-08-28 2004-11-16 International Business Machines Corporation System and method for dynamically optimizing executing activations
JP2003173262A (ja) * 2001-12-06 2003-06-20 Hitachi Ltd プログラムチューニングシステムとプログラムチューニング方法およびプログラムと記録媒体
US7415698B2 (en) * 2002-12-09 2008-08-19 International Business Machines Corporation Testing and debugging framework for application builders
US20040117782A1 (en) * 2002-12-16 2004-06-17 Tse-Win Lo Construction method of external links for software execution environment
US7650596B2 (en) 2003-02-13 2010-01-19 Accurate Technologies Inc. Method for ECU calibration and diagnostics development
US8225293B2 (en) * 2003-02-13 2012-07-17 Accurate Technologies Inc. Method for supporting calibration parameters in an ECU
US20040163078A1 (en) * 2003-02-13 2004-08-19 Correa Colt R. Method for rapidly prototyping, testing and verifying application software
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US20050251791A1 (en) * 2004-04-14 2005-11-10 Robert Hundt Systems and methods for branch profiling loops of an executable program
US20050251790A1 (en) * 2004-04-14 2005-11-10 Robert Hundt Systems and methods for instrumenting loops of an executable program
US7930491B1 (en) 2004-04-19 2011-04-19 Cisco Technology, Inc. Memory corruption detection system and method using contingency analysis regulation
US7293142B1 (en) 2004-04-19 2007-11-06 Cisco Technology, Inc. Memory leak detection system and method using contingency analysis
US7487321B2 (en) * 2004-04-19 2009-02-03 Cisco Technology, Inc. Method and system for memory leak detection
US7716031B2 (en) * 2005-02-25 2010-05-11 Coware, Inc. Interface converter for unified view of multiple computer system simulations
WO2006091785A1 (en) * 2005-02-25 2006-08-31 Coware, Inc. Interface converter for unified view of multiple computer system simulations
US7742905B2 (en) 2005-02-25 2010-06-22 Coware, Inc. Method and system for dynamically adjusting speed versus accuracy of computer platform simulation
US7899661B2 (en) 2006-02-16 2011-03-01 Synopsys, Inc. Run-time switching for simulation with dynamic run-time accuracy adjustment
US8543367B1 (en) 2006-02-16 2013-09-24 Synopsys, Inc. Simulation with dynamic run-time accuracy adjustment
US8464209B2 (en) * 2007-03-19 2013-06-11 Microsoft Corporation Using collaborative development information in a team environment
US8136103B2 (en) * 2008-03-28 2012-03-13 International Business Machines Corporation Combining static and dynamic compilation to remove delinquent loads
US20090259994A1 (en) * 2008-04-15 2009-10-15 Nokia Corporation Apparatus, Method, and Computer Program Product for Analyzing Program Memory Operations
US8516229B2 (en) 2010-02-05 2013-08-20 International Business Machines Corporation Two pass test case generation using self-modifying instruction replacement
US20160019133A1 (en) * 2014-07-15 2016-01-21 4D Soft Kft. Method for tracing a computer software
CN104461503B (zh) * 2014-11-06 2018-09-11 华自科技股份有限公司 动态组成软件界面的方法与系统
US11182272B2 (en) * 2018-04-17 2021-11-23 International Business Machines Corporation Application state monitoring
CN113127251B (zh) * 2021-04-30 2023-07-18 北京奇艺世纪科技有限公司 代码管理方法、装置、设备及存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4071744A (en) * 1976-05-13 1978-01-31 Pollock Eugene J Loop integration control system
US5581695A (en) * 1990-05-09 1996-12-03 Applied Microsystems Corporation Source-level run-time software code debugging instrument
JPH06502941A (ja) * 1990-07-20 1994-03-31 テンプル ユニヴァーシティ―オブ ザ コモンウエルス システム オブ ハイヤー エデュケーション 異種オペレーティングシステムを有する高レベル仮想コンピュータのシステム
US5522072A (en) * 1990-09-04 1996-05-28 At&T Corp. Arrangement for efficiently transferring program execution between subprograms
US5313616A (en) * 1990-09-18 1994-05-17 88Open Consortium, Ltd. Method for analyzing calls of application program by inserting monitoring routines into the executable version and redirecting calls to the monitoring routines
US5680584A (en) * 1991-03-07 1997-10-21 Digital Equipment Corporation Simulator system for code execution and debugging within a multi-architecture environment
WO1992022029A1 (en) * 1991-05-24 1992-12-10 British Technology Group Usa, Inc. Optimizing compiler for computers
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
US5339430A (en) * 1992-07-01 1994-08-16 Telefonaktiebolaget L M Ericsson System for dynamic run-time binding of software modules in a computer system
US5410703A (en) * 1992-07-01 1995-04-25 Telefonaktiebolaget L M Ericsson System for changing software during computer operation
EP0582738A1 (de) * 1992-08-12 1994-02-16 International Business Machines Corporation Kompiler
FR2695460B1 (fr) * 1992-09-09 1994-10-21 Snecma Chambre de combustion de turbomachine à plusieurs injecteurs.
US5367685A (en) * 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
US5452457A (en) * 1993-01-29 1995-09-19 International Business Machines Corporation Program construct and methods/systems for optimizing assembled code for execution
US5369766A (en) * 1993-03-25 1994-11-29 Taligent, Inc. Object-oriented loader system with support for different load formats
US5487158A (en) * 1993-04-06 1996-01-23 International Business Machines Corporation Method and procedure call mechanism for calling 16-bit functions from 32-bit functions
CN1125990A (zh) * 1993-05-10 1996-07-03 思想软件公司 软件自动分析的方法与装置
US5504914A (en) * 1993-06-23 1996-04-02 National Science Council Multi-level instruction boosting method using plurality of ordinary registers forming plurality of conjugate register pairs that are shadow registers to each other with different only in MSB
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
JP3190773B2 (ja) * 1993-09-30 2001-07-23 日本電気株式会社 言語処理プログラムのコンパイル処理方法
US5581697A (en) * 1994-01-28 1996-12-03 Sun Microsystems, Inc. Method and apparatus for run-time error checking using dynamic patching
JP2590045B2 (ja) * 1994-02-16 1997-03-12 日本アイ・ビー・エム株式会社 分散処理制御方法及び分散処理システム
US5583988A (en) * 1994-03-09 1996-12-10 National Instruments Corporation Method and apparatus for providing runtime checking features in a compiled programming development environment
DE69518996T2 (de) * 1994-04-26 2001-03-29 Sun Microsystems Inc Verfahren und Vorrichtung zur selbstbeschreibenden Datenkodierung
US5628016A (en) * 1994-06-15 1997-05-06 Borland International, Inc. Systems and methods and implementing exception handling using exception registration records stored in stack memory
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5652884A (en) * 1994-11-14 1997-07-29 Object Technology Licensing Corp. Method and apparatus for dynamic update of an existing object in an object editor
US5548794A (en) * 1994-12-05 1996-08-20 Motorola, Inc. Data processor and method for providing show cycles on a fast multiplexed bus
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
US5740440A (en) * 1995-01-06 1998-04-14 Objective Software Technology Dynamic object visualization and browsing system
US5701488A (en) * 1995-06-07 1997-12-23 Motorola, Inc. Method and apparatus for restoring a target MCU debug session to a prior state

Also Published As

Publication number Publication date
JPH11232138A (ja) 1999-08-27
EP0926592B1 (de) 2004-04-14
EP0926592A2 (de) 1999-06-30
DE69823153D1 (de) 2004-05-19
EP0926592A3 (de) 2000-08-16
US5911073A (en) 1999-06-08

Similar Documents

Publication Publication Date Title
DE69823153T2 (de) Software-Emulationssystem
DE69811474T2 (de) Rechnerarchitektur zur aufschiebung von exceptions statischer spekulativer befehle
US5274815A (en) Dynamic instruction modifying controller and operation method
DE69826700T2 (de) Kompilerorientiertes gerät zur parallelkompilation, simulation und ausführung von rechnerprogrammen und hardwaremodellen
EP2204738A2 (de) Verfahren und System zur Softwareüberprüfung
US5613098A (en) Testing and debugging new Y architecture code on existing X architecture system by using an environment manager to switch between direct X code execution and simulated Y code execution
US7757217B2 (en) Debugging an application process at runtime
US20060200806A1 (en) Apparatus, system, and method for trace insertion
CN111796831A (zh) 一种多芯片兼容的编译方法和装置
US20100275185A1 (en) System and Method for High Performance Coverage Analysis
Sosič Dynascope: A tool for program directing
CN109144849B (zh) 一种嵌入式软件调测方法
Sosič A procedural interface for program directing
US6163881A (en) Method of monitoring the operation of a computer
Benowitz et al. Experiences in adopting real-time java for flight-like software
Chase et al. Selective interpretation as a technique for debugging computationally intensive programs
DE60030189T2 (de) Befehlsübersetzungsverfahren
KR950012113B1 (ko) 멀티 아키텍춰 환경내의 다중 코드 실행 및 디버깅 시스템에서 코드 인터페이스 자케팅에 특히 적합한 크로스-도메인 명령 호출 및 데이타 참조를 검출하기 위한 시스템 및 방법
DE102009038177B4 (de) Ablaufverfolgung in einem laufenden Computersystem
EP1043660B1 (de) Fehlersicheres Automatisierungssystem
EP1879128B1 (de) Abgesicherter Programmcode
Bakhtin et al. Comparative Debugging of Parallel DVMH-programs.
Younger et al. Understanding concurrent programs using program transformations
Roskos et al. Toward user sharing of the microprogramming level under UNIX on the Perkin-Elmer 3220
DE102022202541A1 (de) Verfahren zum Testen eines Computerprogramms

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee