SE524799C2 - Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum - Google Patents

Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum

Info

Publication number
SE524799C2
SE524799C2 SE0203544A SE0203544A SE524799C2 SE 524799 C2 SE524799 C2 SE 524799C2 SE 0203544 A SE0203544 A SE 0203544A SE 0203544 A SE0203544 A SE 0203544A SE 524799 C2 SE524799 C2 SE 524799C2
Authority
SE
Sweden
Prior art keywords
program
history
breakpoint
unique marker
executed
Prior art date
Application number
SE0203544A
Other languages
Swedish (sv)
Other versions
SE0203544L (en
SE0203544D0 (en
Inventor
Henrik Thane
Hans Hansson
Original Assignee
Zealcore Embedded Solutions Ab
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 Zealcore Embedded Solutions Ab filed Critical Zealcore Embedded Solutions Ab
Priority to SE0203544A priority Critical patent/SE524799C2/en
Publication of SE0203544D0 publication Critical patent/SE0203544D0/en
Publication of SE0203544L publication Critical patent/SE0203544L/en
Publication of SE524799C2 publication Critical patent/SE524799C2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

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)

Abstract

The unique marker used to identify break-off points in the significant events occurring when the computer system is executed comprises a check sum. The real time system is executed on a single processor, multi-processor or distributed system. The debugging method comprises the following steps: (a) executing a computer system provided with the program code to be debugged; (b) recording all the significant events which occur; (c) maintaining a history by analyzing and correlating the recorded events and creating break-off points for each significant event, each break-off point in the program being defined by an identifier comprising an essentially unique marker; and (d) playing back the history in a debugger (9) which supports break-off points and macro and changing the state of the system at program positions where the break-off points have been inserted in order to emulate the recorded execution.

Description

25 30 35 524 799 2 Distribuerade realtidssystem tillför ytterligare en komplexitetsnivå, efter- som processer då kan exekveras samtidigt på olika noder, vilket gör tro- gen återexekvering än mer komplicerat. 25 30 35 524 799 2 Distributed real-time systems add an additional level of complexity, as processes can then be executed simultaneously on different nodes, which makes faithful re-execution even more complicated.

Tai et al.:"Debugging Concurrent Ada Programs by Deterministic Execu- tion”, IEEE Transactions on Software Engineering, Vol. 17, No. 1, Janua- ry 1991, presenterar ett språkbaserat angreppssätt för deterministisk ex- ekveringsdebuggning av samtidiga program skrivna i programspråket Ada. Förfarandet som visas av Tai et al. innefattar definiering av synkro- niseringssekvenser för ett program som skall debuggas. Ett språkbaserat återuppspelningsverktyg används därefter för att omforma programmet som ska debuggas till ett något annorlunda program som sedan kan exe- kveras på ett reproducerbart sätt genom att använda synkroniseringsse- kvenserna som indata. Omformningen av programmet innefattar inskjut- ning av en eller flera kontrollpaket i programmet för att styra exekvering- en av de olika sekvenserna i programmet.Tai et al .: "Debugging Concurrent Ada Programs by Deterministic Execution", IEEE Transactions on Software Engineering, Vol. 17, No. 1, January 1991, presents a language-based approach to deterministic execution debugging of concurrent programs written in The method shown by Tai et al. involves defining synchronization sequences for a program to be debugged, a language-based playback tool then used to transform the program to be debugged into a slightly different program which can then be executed on a reproducible The transformation of the program involves inserting one or more control packets into the program to control the execution of the various sequences in the program.

Leblanc och Mellor-Crummy: "Debugging Parallel Programs with Instant Replay", lEEE Transactions on Computers, Vol. C-36, No. 4, April 1987, visar ett förfarande för debuggning av parallella program. Under pro- gramexekveringen sparas den relativa ordningen mellan signifikanta händelser när de inträffar, men inte de data som är associerade till varje händelse. Interaktioner mellan processer modelleras som operationer på delade objekt. Varje process spelar in versionsnummret för varje delat objekt som det accessar. En partiell ordning för accesserna till varje ob- jekt spelas in, så att ordningen mellan processerna som läser en viss version av ett objekt, inte behöver etableras. Under återuppspelning av programmet i en ekvivalent virtuell maskinmiljö återberäknar varje pro- cess sina utdatavärden och tillhandahåller därmed indata till andra pro- cesser. Som anförs av författarna själva är förfarandet, som de kallar ln- stant Replay, inte lämplig för realtidssystem på grund av svårigheten att simulera ekvivalenta virtuella maskiner.Leblanc and Mellor-Crummy: "Debugging Parallel Programs with Instant Replay", lEEE Transactions on Computers, Vol. C-36, No. 4, April 1987, shows a procedure for debugging parallel programs. During program execution, the relative order between significant events as they occur is saved, but not the data associated with each event. Interactions between processes are modeled as operations on shared objects. Each process records the version number of each shared object it accesses. A partial order for the accesses to each object is recorded, so that the order between the processes that reads a certain version of an object does not need to be established. During playback of the program in an equivalent virtual machine environment, each process recalculates its output values and thus provides input data to other processes. As stated by the authors themselves, the method, which they call Instant Replay, is not suitable for real-time systems due to the difficulty of simulating equivalent virtual machines.

McDowell och Helmbold: Debugging Concurrent Programs, ACM Com- puting Surveys, Vol. 21, No. 4, December 1989, beskriver tre generella tekniker för debuggning av samtidiga program. Metoder för att undvika 10 15 20 25 30 35 524 g99 probeffekten, dvs. att observationen i sig oundvikligen förändrar pro- grammets beteende, diskuteras. Dessa innefattar att proberna, dvs. de delar av programmet som används för debuggningsåndamål, permanent är på plats och användning av hårdvaru-"krokar". lnget förfarande som fungerar tillfredsställande för realtidssystem föreslås.McDowell and Helmbold: Debugging Concurrent Programs, ACM Computing Surveys, Vol. 21, no. 4, December 1989, describes three general techniques for debugging concurrent programs. Methods to avoid the 1024 20 25 30 35 524 g99 probe effect, i.e. that the observation itself inevitably changes the behavior of the program is discussed. These include that the probes, i.e. the parts of the program used for debugging purposes, are permanently in place and the use of hardware "hooks". No procedure that works satisfactorily for real-time systems is proposed.

Thane och Hansson:"Using Deterministic Replay for Debugging of Distri- buted Real-Time Systems", i 12th Euromicro Conference on Real-Time Systems, pp. 265-272, Stockholm, June 2000, IEEE Computer Society, föreslår ett system för debuggning av distribuerade realtidssystem, vilket även kan användas för mindre komplicerade realtidssystem.Thane and Hansson: "Using Deterministic Replay for Debugging of Distributed Real-Time Systems", in the 12th Euromicro Conference on Real-Time Systems, pp. 265-272, Stockholm, June 2000, IEEE Computer Society, proposes a system for debugging distributed real-time systems, which can also be used for less complicated real-time systems.

Systemet som föreslås av Thane och Hansson har tre huvudfunktioner: - inspelning av alla signifikanta händelser under programexe- kvenng - upprättande av historien genom analysering och korrelering av de inspelade händelserna ' - återuppspelning av historien genom användning av en an- passad off-lineversion av kärnan.The system proposed by Thane and Hansson has three main functions: - recording of all significant events during program execution - establishing the story by analyzing and correlating the recorded events' - replaying the story by using a customized off-line version of the kernel .

De inspelade händelserna kan vara processbyten, avbrott och interaktio- ner med externa processer. Historien upprättas som en tidslinje som re- presenterar den inspelade exekveringen. Når historietidslinjen har upprättats så matas den till en instruktionsnivåsimulator där den kan åter- uppspelas.The recorded events can be process changes, interruptions and interactions with external processes. The story is drawn up as a timeline that represents the recorded execution. Once the story timeline has been established, it is fed to an instruction level simulator where it can be replayed.

Ett problem med debuggning inträffar när samma instruktion exekveras flera gånger. Samma programräknarvärde används då vid mer är. ett till- fälle under exekveringen av programmet, så att programräknaren inte är en unik identifierare av tidpunkten då en händelse skedde. Detta inträffar t.ex. när programmet innehåller en loop som exekveras ett antal gånger beroende på en villkorsuppsättning. Samma sak inträffar om en rekursiv rutin används. Den rekursiva rutinen anropar sig själv ett antal gånger, till exempel tills en parameter uppnår ett visst värde. l dessa fall kommer samma programräknarvärde att återuppstå för varje loop, eller varje gång den rekursiva rutinen anropas. Därför kan programräknarvårdet i sig själv inte unikt identifiera punkten i programexekveringen där ett processbyte eller ett avbrott inträffade. 10 15 20 25 30 35 524 7949 Thane och Hansson föreslår i den ovan citerade artikeln att man sparar all information som lagras av kärnan vid kontext-byten, lika väl som stack- och programräknarregister som hänför sig till uppgiften. Denna sparade kontext används som en unik markör för programmet. En nack- del med denna typ av unika markör är att den kan vara beräkningsmäs- sigt krävande att beräkna och/eller att den kräver avsevärt minne för att sparas. Dessutom garanteras den inte att vara unik i strikt mening. Ett alternativt angreppssätt skulle kunna vara att använda hårdvaru- eller mjukvaruinstruktionsräknare. Tyvärr är sådana räknare normalt inte till- gängliga. Att lägga till speciell hårdvara kommer vara kostsamt och en mjukvaruräknare kommer vara beräkningsmässigt krävande.A debugging problem occurs when the same instruction is executed fl times. The same program counter value is then used for more years. an occasion during the execution of the program, so that the program counter is not a unique identifier of the time when an event occurred. This occurs e.g. when the program contains a loop that is executed a number of times depending on a set of conditions. The same thing happens if a recursive routine is used. The recursive routine calls itself a number of times, for example until a parameter reaches a certain value. In these cases, the same program counter value will reappear for each loop, or each time the recursive routine is called. Therefore, the program counter care itself cannot uniquely identify the point in the program execution where a process change or an interruption occurred. 10 15 20 25 30 35 524 7949 Thane and Hansson suggest in the article quoted above that you save all information stored by the kernel during context changes, as well as stack and program counter registers that relate to the task. This saved context is used as a unique marker for the program. A disadvantage of this type of unique marker is that it can be computationally demanding to calculate and / or that it requires considerable memory to be saved. In addition, it is not guaranteed to be unique in the strict sense. An alternative approach could be to use hardware or software instruction counters. Unfortunately, such calculators are not normally available. Adding special hardware will be costly and a software calculator will be computationally demanding.

Ofta innefattar program en eller flera instruktionssekvenser som enbart används för debuggningsändamål. Under exekvering ignoreras helt en- kelt dessa instruktioner. Detta introducerar en skillnad mellan debugg- ningsituationen och exekveringssituationen, vilket utgör ett ytterligare problem vid debuggning av realtidssystem. Ett program som innefattar sådana debuggningsinstruktioner kommer att ta längre tid att exekvera i debuggningsituationen, och ändrar således programmets beteende. Det- ta leder till en probeffekt, dvs. genom att observera systemet så ändrar vi det oundvikligen. l Thane H et al. "Debugging using time machines; Replay your embed- ded systems history" Nov 2001, ln Real-time & embedded computing conference, Milan, beskrivs det som presenteras i ingressen till kravet 1. ÄNDAMÅLET MED UPPFlNNlNGEN Ett ändamål med uppfinningen är att möjliggöra debuggning av datorsy- stem från enskilda program med avbrottsstörningar till multiprocess och distribuerade realtidsdatorsystem.Programs often include one or more instruction sequences that are used only for debugging purposes. During execution, these instructions are simply ignored. This introduces a difference between the debugging situation and the execution situation, which is an additional problem when debugging real-time systems. A program that includes such debugging instructions will take longer to execute in the debugging situation, thus changing the behavior of the program. This leads to a probe effect, ie. by observing the system, we inevitably change it. l Thane H et al. "Debugging using time machines; Replay your embedded systems history" Nov 2001, in the Real-time & embedded computing conference, Milan, describes what is presented in the preamble to claim 1. PURPOSE OF THE INVENTION One purpose of the invention is to enable debugging of computer systems from individual programs with interrupt to multiprocess and distributed real-time computer systems.

SAMMANFATTNING AV UPPFlNNlNGEN Detta ändamål uppnås med den föreliggande uppfinningen genom ett förfarande för debuggning av enkel- och multiprocessrealtidssystem som 10 15 20 25 30 35 5245799 exekveras på en enkelprocessor, multiprocessor eller distribuerat sy- stem, och innefattar stegen: o exekvering av ett datorsystem som innefattar den programkod som ska debuggas o inspelning av alla signifikanta händelser under exekveringen av systemet o upprättande av en historia genom analysering och korrelering av de inspelade händelserna, varvid en brytpunkt insätts vid varje sig- nifikant händelse o återuppspelning av historien i en debugger som stödjer brytpunkter och makron, ändring av systemets tillstånd vid programpositioner där brytpunkter har insatts för att emulera den inspelade exekve- ringen, kännetecknat av att varje brytpunkt i programmet definieras av en brytpunktsidentifierare som innefattar en väsentligen unik markör, vilken markör innefattar en checksumma. Ändamålet uppnås även av en datorprogramprodukt för användning vid debuggning av en programkod i ett datorsystem, varvid nämnda datorsy- stem innefattar o medel för inspelning av alla signifikanta händelser vid exekvering av systemet o medel för att addera en brytpunktsidentifierare för varje brytpunkt o medel för att upprätta en historia genom analysering och korrele- ring av de inspelade händelserna, varvid nämnda datorprogram är anordnat att förändra systemets tillstånd vid positioner iprogram- met som kräver debuggning medan historien återuppspelas, och kännetecknad av att medlet för addering av en brytpunktsidentifiera- re är anordnat att addera en brytpunktsidentifierare som innefattar åt- minstone en väsentligen unik markör som innefattar en checksumma, och att den ytterligare innefattar o medel för återexekvering av den upprättade historien o medel för att vidta lämpliga åtgärder när en brytpunktshändelse in- träffar för att säkra att historien troget återexekveras.SUMMARY OF THE INVENTION This object is achieved with the present invention by a method for debugging single and multiprocess real-time systems executed on a single processor, multiprocessor or distributed system, and comprises the steps of executing a computer system as a computer system. includes the program code to be debugged o recording all significant events during the execution of the system o establishing a history by analyzing and correlating the recorded events, inserting a breakpoint at each significant event o reproducing the history in a debugger that supports breakpoints and macros, changing the state of the system at program positions where breakpoints have been inserted to emulate the executed execution, characterized in that each breakpoint in the program is defined by a breakpoint identifier comprising a substantially unique marker, which marker comprises a checksum. The object is also achieved by a computer program product for use in debugging a program code in a computer system, said computer system comprising means for recording all significant events when executing the system and means for adding a breakpoint identifier for each breakpoint and means for establishing a history by analyzing and correlating the recorded events, said computer program being arranged to change the state of the system at positions in the program which require debugging while the history is being replayed, and characterized in that the means for adding a breakpoint identifier is arranged to add a breakpoint identifier that includes at least one substantially unique marker that includes a checksum, and that it further includes o means for re-execution of the established history o means for taking appropriate action when a breakpoint event occurs to ensure that the history is faithfully re-executed.

Med "väsentligen unik" avses att markören ska ha en form som kommer att tjäna som en unik identiflerare för praktiskt taget alla situationer som kan inträffa. 10 15 20 25 30 35 524 799 e Företrädesvis är datorprogramprodukten anordnad att àteruppspela hi- storien i det ursprungliga systemet, och kännetecknas av att medlet för återexekvering av historien som initieras vid klockslagsinitierade sche- mahändelser, systemanrop och avbrott, är anordnat att exekveras vid åtminstone en brytpunkt.By "substantially unique" is meant that the marker should have a shape that will serve as a unique identifier for virtually any situation that may occur. Preferably, the computer program product is arranged to replay the history of the original system, and is characterized in that the means for re-executing the history initiated at time-initiated schedule events, system calls and interruptions is arranged to execute at least a breaking point.

Uppfinningen möjliggör debuggning av multiprocess och distribuerade realtidsdatorsystem som innehåller loopar och rekursiva anrop. Uppfin- ningen kan utnyttja varje standarddebugger som stödjer brytpunkter och insättning av makron vid brytpunkterna, inte enbart instruktionsnivàsimu- latorn som nämns av Thane och Hansson.The invention enables debugging of multiprocess and distributed real-time computer systems that contain loops and recursive calls. The invention can utilize any standard debugger that supports breakpoints and insertion of macros at the breakpoints, not just the instruction level simulator mentioned by Thane and Hansson.

Debuggningsförfarandet enligt uppfinningen kräver inte förändring av pro- grammet som ska debuggas.The debugging method according to the invention does not require a change of the program to be debugged.

Uppfinningen hanterar sekvenser av debuggningskommandon vid de- buggning av program som exekveras i ett realtidsdatorsystem.The invention handles sequences of debugging commands when debugging programs executed in a real-time computer system.

Uppfinningen hanterar icke-terminerande och terminerande program vid debuggning av realtidsdatorsystem. l en föredragen utföringsform innefattar brytpunktsidentifierarna pro- gramräknaren och systemtiden tillsammans med den väsentligen unika markören.The invention handles non-terminating and terminating programs in debugging real-time computer systems. In a preferred embodiment, the breakpoint identifiers include the program counter and the system time together with the substantially unique cursor.

Företrädesvis innefattar den väsentligen unika markören en av följande eller en kombination därav: ø en checksumma innefattande summan av innehållet i samtliga re- gister och/eller delar av användarstacken. Denna lösning har för- delen att kompilatorn inte behöver modifieras. Hàrdvaru- eller mjukvaruinstruktionsräknare behövs inte. Detta gör den föreslagna lösningen relativt billig samtidigt som den möjliggör bättre optime- ring av den exekverade programkoden jämfört med vad som skulle vara möjligt med användning av mjukvaruinstruktionsräknare. o En stackpekare och/eller instruktionsräknare (IC). Detta möjliggör utnyttjande av eventuellt tillgängliga HW resurser, vilket är fördel- aktigt framför mjukvarulösningar ur ett resursperspektiv. 10 15 20 25 30 35 524 799 7 Företrädesvis innefattar förfarandet steget exekvering av förändringse- mulerande kod vid åtminstone en brytpunkt för att emulera förändringen i programflödet som inspelats under exekveringen av systemet.Preferably, the substantially unique marker comprises one of the following or a combination thereof: ø a checksum comprising the sum of the contents of all registers and / or parts of the user stack. This solution has the advantage that the compiler does not need to be modified. Hardware or software instruction counters are not required. This makes the proposed solution relatively inexpensive while enabling better optimization of the executed program code compared to what would be possible with the use of software instruction calculators. o A stack pointer and / or instruction counter (IC). This enables the utilization of any available HW resources, which is advantageous over software solutions from a resource perspective. Preferably, the method comprises the step of executing change emulating code at at least one breakpoint to emulate the change in the program flow recorded during the execution of the system.

Förfarandet och programvaruprodukten enligt uppfinningen möjliggör för- ändringar av och tillägg till koden för att lägga till debuggningsinstruktio- ner eller testa programkorrigeringar. Systembeteendet som svar på änd- rad indata eller ändrad kod kan undersökas.The method and software product of the invention enable modifications and additions to the code to add debugging instructions or test software fixes. The system behavior in response to changed input data or changed code can be examined.

KORT BESKRIVNING AV RITNINGARNA I det följande kommer uppfinningen att beskrivas i närmare detalj enbart såsom ett exempel och med hänvisning till bifogade ritningar, i vilka Figur 1 illustrerar ett enkelt datorsystem i vilket uppfinningen kan använ- das.BRIEF DESCRIPTION OF THE DRAWINGS In the following, the invention will be described in more detail only as an example and with reference to the accompanying drawings, in which Figure 1 illustrates a simple computer system in which the invention can be used.

Figur 2 visar den Konfigurering som används vid debuggning i enlighet med en utföringsform av uppfinningen Figur 3 visar ett förenklat exempel av en processintersekvensering i ett multiprocessrealtidssystem.Figure 2 shows the Configuration used in debugging in accordance with an embodiment of the invention Figure 3 shows a simplified example of a process interleaving in a multiprocess real-time system.

Figur 4, 5 och 6 visar schematiskt de delar av en exekverande kärna som används för att avgöra vilken process som skall exekveras vid varje given tidpunkt, dvs. för att reproducera processintersekvensering såsom den som visas i figur 3.Figures 4, 5 and 6 schematically show the parts of an executing core which are used to determine which process is to be executed at any given time, i.e. to reproduce process sequencing such as that shown in Figure 3.

DETALJERAD BESKRIVNING AV UTFÖRINGSFORMER Uppfinningen kan användas i ett distribuerat system innefattande ett an~ tal noder. Varje nod är ett självständigt datorelement, med en central processenhet (CPU), minne, nätverksaccess, en lokal klocka och in/ut- enheter (l/O) för sampling och styrning av externa processer. Dessutom så måste det finnas en global synkroniserad tidsbas, med en känd preci- sion ö, vilket innebär att två noder i systemet har lokala klockor som ald- rig skiljer sig åt mer än ö.DETAILED DESCRIPTION OF EMBODIMENTS The invention can be used in a distributed system comprising a number of nodes. Each node is an independent computer element, with a central process unit (CPU), memory, network access, a local clock and input / output units (I / O) for sampling and control of external processes. In addition, there must be a globally synchronized time base, with a known precision island, which means that two nodes in the system have local clocks that never differ more than island.

Uppfinningen kan användas i såväl enkla datorer som parallella och dis- tribuerade system. Figur 1 visar de inspelningar som behövs för en en- 10 15 20 25 30 35 524 799 s skild nod. För system med flera noder krävs motsvarande inspelningar för varje nod.The invention can be used in simple computers as well as parallel and distributed systems. Figure 1 shows the recordings needed for a single node. For systems with several nodes, corresponding recordings are required for each node.

Mjukvaran som exekveras på det distribuerade systemet består av en uppsättning av samtidiga processer och avbrottsrutiner som kommunice- rar genom att skicka meddelanden eller via delat minne. Processer och avbrott kan ha funktionella och tidsmässiga sidoeffekter på grund av fö- regripning, meddelandeöverföring och delat minne, dvs. de kan oavsikt- ligt påverka varandra.The software executed on the distributed system consists of a set of simultaneous processes and interrupt routines that communicate by sending messages or via shared memory. Processes and interruptions can have functional and temporal side effects due to anticipation, message transmission and shared memory, ie. they can inadvertently affect each other.

Figur 1 visar en process 1 som är en av flera processer som kan exekve- ras i ett realtidssystem. Processen kommunicerar med en OS kärna 3 genom ett första gränssnitt IF1. Kommunikationen över lF1 innefattar händelser såsom aktivering och terminering av processen, systemanrop, föregripning och avbrottsträffar. Kärnan förutsätts vara en exekverande realtidskärna som kan, men behöver inte, stödja föregripande schema- läggning.Figure 1 shows a process 1 which is one of several processes that can be executed in a real-time system. The process communicates with an OS core 3 through a first interface IF1. Communication over lF1 includes events such as activation and termination of the process, system calls, anticipation and interrupt hits. The core is assumed to be an executive real-time core that can, but does not have to, support anticipatory scheduling.

Processen 1 kan även kommunicera med en eller flera externa processer 5, via ett andra gränssnitt lF2. Över detta andra gränssnitt |F2 kan exter- na data mottas av processen och utdata kan skickas till den externa pro- cessen 5.The process 1 can also communicate with one or more external processes 5, via a second interface lF2. Via this second interface | F2, external data can be received by the process and output data can be sent to the external process 5.

I association med kärnan 3 och/eller processen 1 finns det en inspel- ningsenhet 7 som spelar in kommunikationen över gränssnitten lF1 och lF2, inklusive signifikanta systemhändelser, såsom de ovan nämnda och även accesser till realtidsklockan.In association with the core 3 and / or the process 1, there is a recording unit 7 which records the communication over the interfaces lF1 and lF2, including significant system events, such as those mentioned above, and also accesses to the real-time clock.

För varje tillämpning bör signifikanta variabler identifieras, såsom till- ståndsvariabler och perifera indata, såsom läsningar av analog/digital- omvandlare eller händelser såsom accesser till den lokala klockan. Des- sa signifikanta variabler bör spelas in så att de kan återuppspelas off-line.For each application, significant variables should be identified, such as state variables and peripheral inputs, such as readings from analogue / digital converters or events such as accesses to the local clock. These significant variables should be recorded so that they can be replayed off-line.

Signifikanta variabler som kan återskapas genom återexekvering av pro- grammet behöver inte spelas in, eftersom de kommer att vara tillgängliga under programexekveringen. l ett multiprocessrealtidssystem så måste, förutom de olika sorterna av ovan listade variabler, dessutom systemets kontrollflöde spelas in. Detta motsvarar väsentligen processbyten och 10 15 20 25 30 35 524 799 9 avbrottsstörning, dvs. överföring av kontroll från en process till en annan process, eller från en process till en avbrottshanteringsrutin och tillbaka.Significant variables that can be recreated by re-executing the program do not need to be recorded, as they will be available during program execution. In a multiprocess real-time system, in addition to the different types of variables listed above, the system's control flow must also be recorded. This essentially corresponds to process changes and interruption disturbance, i.e. transferring control from one process to another process, or from a process to an interrupt management routine and back.

Externa interaktioner |F2 och anropen till OS kärnan lFl måste enligt uppfinningen spelas in. Övervakningen bör vara tillräckligt detaljerad så att den exakta förekomsten av föregripanden och avbrottsstörningar kan avgöras, dvs. den bör spela in programräknarvärdena när händelserna uppstod. Alla inspelade händelser bör dessutom tidsstämplas i enlighet med den lokala realtidsklockan.External interactions | F2 and the calls to the OS core lF1 must be recorded according to the invention. The monitoring should be sufficiently detailed so that the exact presence of anticipations and interruptions can be determined, ie. it should record the program counter values when the events occurred. In addition, all recorded events should be timed in accordance with the local real-time clock.

Inspelningen av meddelanden gör det möjligt att, för en nod i taget, lokalt áteruppspela interaktionen med andra noder i systemet utan att man be- höver återuppspela hela systemet samtidigt. Globalt synkroniserade tids- stämplar för alla händelser möjliggör debuggning av hela det distribuera- de realtidssystemet och även visualisering av alla inspelade och äterexe- kverade händelser i systemet. lnspelningsmekanismen måste även stödja inspelningar definierade av programmeraren, dvs. det bör finnas systemanrop för inspelning av l/O- operationer, lokalt tillstànd, access till realtidsklockan, mottagna medde- landen och accesser till delade data.The recording of messages makes it possible, for one node at a time, to locally replay the interaction with other nodes in the system without having to replay the entire system at the same time. Globally synchronized timestamps for all events enable debugging of the entire distributed real-time system and also visualization of all recorded and re-executed events in the system. The recording mechanism must also support recordings defined by the programmer, ie. there should be system calls for recording I / O operations, local state, access to the real-time clock, received messages and access to shared data.

Tre typer av inspelningsenheter kan användas: Icke-inkräktande hàrdvaruinspelare använder, t.ex. hàrdvaru, i- kretsenrealiserade emulatorer (lCE) med dubbelportsminne. Den här ty- pen av historieinspelare kräver ingen instrumentering av målsystemet, om den i-kretsenrealiserade emulatorn har realtidsoperativsystems- (RTOS)- medvetenhet eller avbrottsservicerutinsmedvetenhet. Flertalet kommersiella ICE-produkter erbjuder detta särdrag, t.ex. de som mark- nadsförs av Lauterbach och AMC. Med en sådan ICE är det möjligt att observera tillståndet hos RTOS genom övervakning av förändringarna i datastrukturer hos RTOS via dubbelportminnet. Detta kan även utföras för enklare händelsetriggadesystem genom att observera inträffade av- brott och data kan inspelas om dess plats i minnet är känd. De flesta kompilatorer och länkare kan på begäran generera adresser till variabler om de tillfrågas. Dessutom är perifera indata/utdata oftast minnesavbil- dad och specificerad i länkkonfigureringsscripter. 10 15 20 25 30 35 524 799 10 lcke-inkräktande hårdvaruinspelningsmedel är icke-inkräktande eftersom den idealt inte kommer att stjäla några CPU-cykler eller minne från målet.Three types of recording devices can be used: Non-intrusive hardware recorders use, e.g. hardware, i-circuit realized emulators (lCE) with dual port memory. This type of history recorder does not require any instrumentation of the target system, if the i-circuit realized emulator has real-time operating system (RTOS) awareness or interrupt service routine awareness. Most commercial ICE products offer this feature, e.g. those marketed by Lauterbach and AMC. With such an ICE, it is possible to observe the state of RTOS by monitoring the changes in data structures of RTOS via the dual port memory. This can also be done for simpler event trigger systems by observing interruptions that have occurred and data can be recorded if its location in memory is known. Most compilers and linkers can generate addresses for variables on demand if requested. In addition, peripheral input / output is usually memory mapped and specified in link configuration scripts. Non-intrusive hardware recording means is non-intrusive as it will ideally not steal any CPU cycles or memory from the target.

Hybrid hårdvaru-/mjukvaruinspelningsmedel har hårdvarustöd och ett minimum av målmjukvaruinstrumentering. lvljukvaruprober skriver histo- riedata till specifika adresser och specifik hårdvara används för att samla historier, t.ex. genom att använda logikanalysatorer eller bussavlyssning.Hybrid hardware / software recorders have hardware support and a minimum of target software instrumentation. Lvljukware probes write history data to specific addresses and specific hardware is used to collect stories, e.g. by using logic analyzers or bus listening.

Kommersiellt tillgängliga inspelningsmekanismer innefattar de från Agi- lent, Lauterbach, VisionlCE och Microtek.Commercially available recording mechanisms include those from Agilent, Lauterbach, VisionlCE and Microtek.

Hybridinspelningsmedel kan även vara icke-inkräktande om alla datama- nipulationer och tillstånd reflekteras i systemets externa minne, och RTOS- och datamedvetenhet tillhandahålls. l verkligheten har emellertid många mikrokontroller och CPU:er on-chip cache- och primärminnen, vilket innebär att eventuella förändringar i tillstånd eller data hos systemet inte nödvändigtvis återspeglas i det externa minnet. Därför är det nöd- vändigt att instrumentera tillämpningen och operativsystemet så att till- lämpningens dataflöde och kontrollflödet för avbrott och processbyten spelas in och lagras i externt minne, vilket temporärt kringgår chache- minnet och on-chip minnet.Hybrid recorders can also be non-intrusive if all data manipulations and states are reflected in the system's external memory, and RTOS and data awareness are provided. In reality, however, many microcontrollers and CPUs have on-chip cache and primary memories, which means that any changes in the state or data of the system are not necessarily reflected in the external memory. Therefore, it is necessary to instrument the application and the operating system so that the data flow of the application and the control flow for interruptions and process changes are recorded and stored in external memory, which temporarily bypasses the cache memory and on-chip memory.

Eftersom all instrumenteringskod konsumerar CPU-cykler så måste den lämnas i målsystemet för att eliminera probeffekten. Observera att det inte är nödvändigt att spara data såsom meddelanden som skickas mel- lan processer, eftersom dessa överföringar kan återexekveras off-line. En extern historiker, som kommer att beskrivas nedan i närmare detalj, sam- lar sedan alla förändringar i denna buffert och konstruerar en historia.Since all instrumentation code consumes CPU cycles, it must be left in the target system to eliminate the probe effect. Note that it is not necessary to save data such as messages sent between processes, as these transfers can be re-executed off-line. An external historian, who will be described below in more detail, then collects all the changes in this buffer and constructs a history.

Hybridinspelningsmedlet är mindre kostsamt än lCE:n, men båda typerna har skalningsproblem för multiprocessorsystem och distribuerade sy- stem.The hybrid recording medium is less expensive than the ICE, but both types have scaling problems for multiprocessor systems and distributed systems.

Mjukvaruinspelningsmedel har ett instrumenterat operativsystem och till- lämpningsmjukvara, där historier sparas lokalt i cirkulära minnesbuffertar, typiskt av programmerbar storlek. Denna typ av inspelningsmedel är ock- så inkräktande, på så sätt att den konsumerar CPU-cykler för lagring av händelser och genom att den också behöver minne för lagring av data- 10 15 20 25 30 35 524 799 11 och kontrollflöden. En fördel med mjukvaruvinklingen är att den överva- kar systemet från "insidan", vilket innebär att on-chip minnen och cha- cheminnen inte utgör något hinder.Software recorders have an instrumented operating system and application software, where stories are stored locally in circular memory buffers, typically of programmable size. This type of recording medium is also intrusive, in that it consumes CPU cycles for storing events and in that it also needs memory for storing data and control streams. An advantage of the software angle is that it monitors the system from the "inside", which means that on-chip memories and the chemistry memory do not constitute an obstacle.

Genom att lämna proberna i målsystemet så undviks probeffekten, dvs. det som exekveras under test och debuggning kommer även att exekve- ras i det levererade systemet. Det interna historielagret består av en cy- klisk array av buffertar med programmerbar längd. Under testning kan innehållet i de cykliska buffertarna periodiskt laddas upp till historikern för ihopsamling av längre historier utan att avbryta tillämpningen, tex. genom användning av en lågprioriterad process. Det är även möjligt att exekvera systemet tills det kraschar och sedan ladda upp den lagrade historien i målet till historikern.By leaving the probes in the target system, the probe effect is avoided, ie. what is executed during testing and debugging will also be executed in the delivered system. The internal history layer consists of a cyclic array of buffers of programmable length. During testing, the contents of the cyclic buffers can be periodically uploaded to the historian for collection of longer stories without interrupting the application, e.g. through the use of a low-priority process. It is also possible to execute the system until it crashes and then upload the stored history in the target to the historian.

Mjukvaruinspelningsmedlet möjliggör, till skillnad från hårdvaru- och hy- bridinspelningsmedlen beskrivna ovan, diagnos och debuggning av sy- stemet efter leverans. Med andra ord har den svart-låde-funktionalitet, såsom allmänt känt från flygplan. Detta innebär att ett deterministiskt återskapande av exakt vad som hände vid ett rapporterat fel i princip är möjligt.The software recorder, unlike the hardware and hybrid recorders described above, enables diagnosis and debugging of the system after delivery. In other words, it has black-box functionality, as is commonly known from aircraft. This means that a deterministic re-creation of exactly what happened in the event of a reported error is in principle possible.

Mjukvarubaserade inspelningsmekanismer erbjuder dessutom en lösning som år skalbar till multiprocessor eller distribuerade system till en lägre kostnad än hårdvaru- och hybridinspelningsmedlet, eftersom den enda extra kostnaden är minne och ett fåtal CPU-cykler.Software-based recording mechanisms also offer a solution that is scalable to multiprocessor or distributed systems at a lower cost than the hardware and hybrid recording medium, as the only additional cost is memory and a few CPU cycles.

I kontrast till vad som föreslagits av Thane och Hansson så kan uppfin- ningen àterexekvera historier med användning av ett normalt RTOS, dvs. ingen speciell off-lineversion av RTOS krävs. Detta åstadkoms genom inskjutning av brytpunkter vid punkter i programmet där kontrollflödet av den inspelade exekveringen ändras (t.ex. vid processbyten, avbrottsin- träffanden och systemanrop). Kod som emulerar det förändrade kontroll- flödet adderas till brytpunkterna. Detta beskrivs mer i detalj nedan.In contrast to what was proposed by Thane and Hansson, the invention can re-execute stories using a normal RTOS, ie. no special offline version of RTOS is required. This is achieved by inserting breakpoints at points in the program where the control flow of the recorded execution changes (eg during process changes, interrupt occurrences and system calls). Code that emulates the changed control flow is added to the breakpoints. This is described in more detail below.

Figur 2 visar konfigurationen som används vid debuggning enligt en utfö- ringsform av uppfinningen. Processen 1 kommunicerar nu över gränssnit- tet IF1' med en exekverande off-line kärna 3”. Off-line kärnan 3' kan si- 10 15 20 25 30 35 524 799 12 mulera några av de processer som utförts av den exekverande kärnan 3 i figur 1, men realtidsklockan och schemaläggningsfunktionerna behövs inte. Vilka processer som behövs och hur de kan utföras kommer att dis- kuteras nedan. Processen 1 kommunicerar även med en debugger 9 via ett gränssnitt lF2', för att simulera kommunikationen som normalt skulle ske med den externa processen 5 i figur 1. lnspelaren 7 använder i detta fall data som inspelats i konfigurationen i figur 1 för att styra off-line kär- nan 3' och kommunikationen över gränssnittet lF2”.Figure 2 shows the configuration used in debugging according to an embodiment of the invention. Process 1 now communicates over the IF1 'interface with an executive off-line core 3 ”. The off-line core 3 'can simulate some of the processes performed by the executing core 3 in Figure 1, but the real-time clock and scheduling functions are not needed. What processes are needed and how they can be performed will be discussed below. Process 1 also communicates with a debugger 9 via an interface lF2 ', to simulate the communication that would normally occur with the external process 5 in Figure 1. In this case, the recorder 7 uses data recorded in the configuration in Figure 1 to control the line core 3 'and the communication over the lF2 interface ”.

Off-line kärnan 3' kan, med stöd av debuggern 9, återuppspela alla signi- fikanta systemhändelser som spelats in av inspelningsanordningen 7.The off-line core 3 'can, with the support of the debugger 9, replay all significant system events recorded by the recording device 7.

Detta inkluderar start av processer i den inspelade ordningen och utfö- rande av processbyten och upprepande av avbrottsstörningar vid de in- spelade programräknarvärdena. Återuppspelningsschemat reproducerar även accesser till den lokala klockan, l/O-funktioner över lF2 och acces- ser till delade data, genom att tillhandahålla inspelade värden.This includes starting processes in the recorded order and performing process changes and repeating interrupt disturbances at the recorded program counter values. The replay schedule also reproduces accesses to the local clock, l / O functions over lF2 and accesses to shared data, by providing recorded values.

Debuggern 9, som kan vara en konventionell debugger av känd typ, kommunicerar även med off-line kärnan 32 En alternativ utföringsform skiljer sig från den i figur 2 genom att ingen off-lineversion av kärnan används. I detta fall kan standarddebuggrar, inklusive ICE, logikanalysatorer och instruktionssimulatorer användas.The debugger 9, which may be a conventional debugger of known type, also communicates with the off-line core 32. An alternative embodiment differs from that in Figure 2 in that no off-line version of the core is used. In this case, standard debuggers, including ICE, logic analyzers and instruction simulators can be used.

Dessutom kan den verkliga hårdvaran användas tillsammans med fjärr- debuggning, som ibland kallas bakgrundsdebuggning. Det enda kravet för detta är att brytpunkterna kan stoppas in och att tillstàndstransforme- rande kod kan exekveras vid brytpunkterna.In addition, the real hardware can be used in conjunction with remote debugging, sometimes called background debugging. The only requirement for this is that the breakpoints can be plugged in and that the state transforming code can be executed at the breakpoints.

Debuggern i figur 2 är realiserad i mjukvara. Alternativt kan debuggern vara realiserad i hårdvara. l detta fall utgörs debuggern av en i-kretsen realiserad emulator försedd med nödvändig mjukvara. Hårdvaran möjlig- gör inspelning, definition av brytpunktsmarkörer, bekräftelse på exekve- ring av brytpunkter, samt möjligheten att förändra systemtillstàndet för återuppspelning och styrning av exekveringen av mälsystemet. 10 15 20 25 30 35 524 799 13 Alternativt kan fjärrdebuggning användas. Detta innebär att debugg- ningsprogrammet körs på en separat dator. Detta kallas även Back- ground Mode Debugging (BMD). l ett multiprocessrealtidssystem måste, utöver vad som beskrivits ovan, processintersekvenseringshändelser spelas in. Figur 3 visar ett förenklat exempel på processintersekvensering i ett multiprocessrealtidssystem.The debugger in figure 2 is realized in software. Alternatively, the debugger can be implemented in hardware. In this case, the debugger consists of an in-circuit realized emulator provided with the necessary software. The hardware enables recording, definition of breakpoint markers, confirmation of execution of breakpoints, and the ability to change the system state for playback and control of the execution of the target system. 10 15 20 25 30 35 524 799 13 Alternatively, remote debugging can be used. This means that the debugging program runs on a separate computer. This is also called Background Mode Debugging (BMD). In a multiprocess real-time system, in addition to what is described above, process sequencing events must be recorded. Figure 3 shows a simplified example of process interleaving in a multiprocess real-time system.

Den horisontella axeln är en tidsaxel.The horizontal axis is a time axis.

Händelser spelas in enligt följande: Process A startar vid tid t=O.Events are recorded as follows: Process A starts at time t = 0.

Process A föregrips av process B vid t=4 vid programräknarvärdet PC=x.Process A is preceded by process B at t = 4 at the program counter value PC = x.

Avbrott I startar vid t=7 och föregriper process B vid programräknarvärdet PC=y Avbrott I avslutas vid t=9.Interrupt I starts at t = 7 and anticipates process B at the program counter value PC = y Interrupt I ends at t = 9.

Process B återupptas vid t=9 med PC=y.Process B is resumed at t = 9 with PC = y.

Process B avslutas vid t=10. process A återupptas vid t=1O med PC=x.Process B ends at t = 10. process A is resumed at t = 10 with PC = x.

Process A avslutas vid t=11.Process A ends at t = 11.

Process C startas vid t=11.Process C is started at t = 11.

Process C avslutas vid t=16 I debuggningsystemet enligt uppfinningen så sparas tiden varje gång ett processbyte utförs. Dessutom, om en föregripning inträffar, t.ex. vid t=4 och t=7, lagras även programräknarvärdet. Om en extern variabel inma- tas så måste värdet hos denna variabel lagras.Process C ends at t = 16 In the debugging system according to the invention, the time is saved each time a process change is performed. In addition, if an anticipation occurs, e.g. at t = 4 and t = 7, the program counter value is also stored. If an external variable is entered, the value of this variable must be stored.

När inspelningen är genomförd är historien upprättad, för efterföljande återexekvering i debuggern. För att möjliggöra en trogen återexekvering i debuggern så sorterar historikern först händelserna i den tidsordning de inträffat och skapar en tidslinje. Om systemet är ett mutiprocessor- eller ett distribuerat realtidssystem konstruerar historikern synkroniserade pa- rallella tidslinjer baserade på inspelningarna vid varje nod. Tidslinjen för kontrollflödet representeras av en sekvens av villkorliga brytpunkter, så att en brytpunkt sätts för varje programräknarvärde där en kontrollflödes- händelse inträffat, bevakad av villkoret för den inspelade väsentligen uni- 10 15 20 25 30 35 524 799 14 ka markören. Utformningen av den väsentligen unika markören kommer att diskuteras nedan.When the recording is completed, the history is established, for subsequent re-execution in the debugger. To enable a faithful re-execution in the debugger, the historian first sorts the events in the chronological order in which they occurred and creates a timeline. If the system is a multiprocessor or distributed real-time system, the historian constructs synchronized parallel timelines based on the recordings at each node. The timeline for the control flow is represented by a sequence of conditional breakpoints, so that a breakpoint is set for each program counter value where a control flow event has occurred, monitored by the condition of the recorded substantially unique marker. The design of the essentially unique marker will be discussed below.

För varje brytpunkt exekveras ett makro (eller program) som sätter till- ståndet i målsystemet tili samma tillstånd som det var i precis före pro- cessbytet under den ursprungliga exekveringen. Detta innefattar uppda- tering av minnen och register, och inmatningen externa variabelvärden.For each breakpoint, a macro (or program) is executed that sets the state of the target system to the same state as it was in just before the process change during the original execution. This includes updating memories and registers, and entering external variable values.

De externa variabelvärdena måste hämtas från de tidigare lagrade vär- dena.The external variable values must be retrieved from the previously stored values.

Till exempel, när en högprioriterad process föregriper en annan process så kan makrot eller programmet innefatta följande handlingar: o Lägg processen som skall exekveras härnäst vid brytpunkten i be- redskapskön. Säkerställ att den har den högsta prioriteten i kön. o Generera ett tidsavbrott eller motsvarande för att aktivera RTOS schemaläggaren så att den utför processbytet.For example, when a high-priority process precedes another process, the macro or program may include the following actions: o Place the process to be executed next to the breakpoint in the standby queue. Make sure it has the highest priority in the queue. o Generate a timeout or equivalent to activate the RTOS scheduler to perform the process change.

Exakt hur detta kan ske i ett specifikt RTOS beskrivs nedan.Exactly how this can happen in a specific RTOS is described below.

På liknande sätt sammanställs en tidslinje för dataflödet. Om ett hårdva- rubaserat inspelningsmedel används kan databrytpunkter tilldelas, dvs. brytpunkter som triggas när specifika adresser hämtas. Till exempel, när en variabel eller indata/utdata-enhet läses så kan innehållet på den häm- tade adressen återskapas från inspelningen innan värdet verkligen läses av tillämpningen, genom exekvering av ett program som är associerat till databrytpunkten.In a similar way, a timeline for the data flow is compiled. If a hardware-based recording medium is used, data breakpoints can be assigned, ie. breakpoints that are triggered when specific addresses are retrieved. For example, when reading a variable or input / output device, the contents of the retrieved address can be recreated from the recording before the value is actually read by the application, by executing a program associated with the data breakpoint.

För hybrid- och mjukvaruinspelare kan övervakningsomslag (monitor wrappers) användas: Monitor(&var,output,sizeof(var_type));.For hybrid and software recorders, monitor wrappers can be used: Monitor (& var, output, sizeof (var_type)) ;.

Under inspelningen så returnerar övervakningsomslagen det specifika dataelementet var. Under âteruppspelning sker det omvända, dvs. data- elementet var tilldelas värdet för det utdata som inspelats. lO 15 20 25 30 35 524 799 15 Om den fullständiga markören är sann så är brytpunktsvillkoret uppfyllt.During recording, the monitoring cover returns the specific data element where. During replay, the reverse occurs, ie. the data element was assigned the value of the output that was recorded. 10 15 20 25 30 35 524 799 15 If the complete cursor is true, the breakpoint condition is met.

Makrot eller programmet som är associerat till brytpunkten exekveras för att exekvera en av inspelningen bestämd systemhändelse.The macro or program associated with the breakpoint is executed to execute a system event determined by the recording.

Figur 4, 5 och 6 visar schematiskt den del av en exekverande kärna som används för att styra vilken process som skall exekveras vid varje given tidpunkt, dvs. för att reproducera processintersekvensering såsom den illustrerad i figur 3.Figures 4, 5 and 6 schematically show the part of an executing core which is used to control which process is to be executed at any given time, i.e. to reproduce process sequencing as illustrated in Figure 3.

Program som inte skall exekveras vid en given tidpunkt hålls i ett vänte- område 21 av kärnan. Program som är redo för exekvering vid samma tidpunkt hålls i ett beredskapsområde 23. En tabell 25 lagrar information om varje program. Den vänstra kolumnen i tabellen 25 innehåller pro- gramnamnet, i detta fall A, B och C. l\/littenkolumnen innehåller pro- grammens periodtider. I detta fall 10, 15 och 27 sekunder, för program- men A, B, respektive C. Den högra kolumnen innehåller en räknare som visar återstående tid innan programmet överförs från vänteområdet 21 till beredskapsområdet 23. Till exempel i ett on-line system, kan räknaren räknas ned av operativsystemet, och när en räknare ges värdet O så överförs det aktuella programmet till beredskapsområdet 23. l det generella fallet enligt uppfinningen, är debuggningsystemet i stånd att snappa upp operativsystemets funktion för att styra vilken process som skall exekveras härnäst. Hur detta uppnås beror på hur funktionen är realiserad i operativsystemet.Programs that are not to be executed at a given time are held in a waiting area 21 of the core. Programs that are ready for execution at the same time are held in a contingency area 23. A table 25 stores information about each program. The left column in Table 25 contains the program name, in this case A, B and C. The l / litten column contains the period times of the programs. In this case 10, 15 and 27 seconds, for programs A, B, and C, respectively. the counter can be counted down by the operating system, and when a counter is given the value 0, the current program is transferred to the standby area 23. In the general case of the invention, the debugging system is able to intercept the operation of the operating system to control which process is to be executed next. How this is achieved depends on how the function is realized in the operating system.

I detta exempel, där det antas att en off-line kärna används, är nedräk- ningsfunktionen deaktiverad i off-line kärnan. Istället sätts räknaren direkt till O, när systemet under återuppspelningen fastställer att programmet skall exekveras härnäst. Detta kan utföras, till exempel för program B, när det bestämts att B ska startas vi nästa brytpunkt. Således, enligt upp- finningen, bibehålls kärnans funktion för hantering av programmens till- stånd, men mekanismen för att ändra tillståndet ändras för att möjliggöra förändringar vid vilken önskad tidpunkt som helst. l figur 4 körs programmet A, samtidigt som B och C är i väntetillstånd. I figur 5 har programmet B överförts till beredskapstillståndet. l detta ex- 10 15 20 25 30 35 524 239 empel har programmet B högre prioritet än programmet A, varför pro- grammet A föregrips, dvs. programmet B överförs till ett exekveringstill- stånd och programmet A överförs till beredskapstillståndet och kan inte startas igen förrän programmet B har avslutats. Situationen efter före- gripning visas ifigur 6.In this example, where it is assumed that an off-line core is used, the countdown function is deactivated in the off-line core. Instead, the counter is set directly to 0, when the system during playback determines that the program is to be executed next. This can be done, for example for program B, when it has been decided that B should be started at the next breakpoint. Thus, according to the invention, the function of the core for managing the state of the programs is maintained, but the mechanism for changing the state is changed to enable changes at any desired time. In Figure 4, the program A is run, at the same time as B and C are in the waiting state. In Figure 5, program B has been transferred to the standby state. In this example, program B has a higher priority than program A, which is why program A is anticipated, ie. program B is transferred to an execution state and program A is transferred to the standby state and cannot be restarted until program B has ended. The situation after the pre-trial is shown in Figure 6.

I den ovan beskrivna kända lösningen är det inspelade värdet för identifi- ering av en brytpunkt det motsvarande programräknarvärdet. Detta fun- gerar endast om ett givet programräknarvärde enbart inträffar en gång under programmets exekvering. I åtminstone tre fall uppfylls inte detta: om programmet innehåller loopar, underrutiner eller rekursiva funktioner. l dessa fall kan samma instruktioner komma att exekvera flera gånger såsom diskuterats i inledningen. Därför kan programräknar värden (PC) återanvändas i loopar, underrutiner och rekursiva funktioner. På grund av detta och på grund av den grova och oförutsägbara upplösningen hos reguljära tidtagare hos CPU:er är det nödvändigt att definiera en unik, eller tillräckligt unik, markör. l enlighet med uppfinningen så lagras därför en markör för varje bryt- punkt. Markören består allmänt av den variabla tiden (t), programräkna- ren (PC) och åtminstone en ytterligare väsentligen unik markör.In the known solution described above, the recorded value for identifying a breakpoint is the corresponding program counter value. This only works if a given program counter value only occurs once during program execution. In at least three cases this is not fulfilled: if the program contains loops, subroutines or recursive functions. In these cases, the same instructions may be executed several times as discussed in the introduction. Therefore, program count values (PC) can be reused in loops, subroutines and recursive functions. Because of this and because of the rough and unpredictable resolution of regular timers of CPUs, it is necessary to define a unique, or sufficiently unique, marker. In accordance with the invention, therefore, a marker is stored for each breakpoint. The cursor generally consists of the variable time (t), the program counter (PC) and at least one further substantially unique cursor.

Om målsystemet stödjer instruktionsräknare (lC) kan den väsentligen unika markören definieras av tupeln . lnstruktionsräknaren gör det möjligt att åtskilja olika loopiterationer och funktionsanrop. Den vari- abla tiden, t, arbetar med en grövre skala och underlättar åtskillnad mel- lan inkarnationer av samma process, som kan vara fallet för periodiska processer.If the target system supports instruction counter (IC), the essentially unique cursor can be defined by the tuple. The instruction counter makes it possible to separate different loopiterations and function calls. The variable time, t, works on a coarser scale and facilitates distinction between incarnations of the same process, which may be the case for periodic processes.

Cykelräknare (CC) är vanligare i moderna mikroprocessorer än instruktionsräknare men har nackdelen att de är oförutsägbara under återuppspelningen på grund av icke-reproducerbart beteende hos ca- cheminnen och pipelines. Därför är de inte möjliga att använda som uni- ka markörer.Cycle counters (CCs) are more common in modern microprocessors than instructional counters but have the disadvantage that they are unpredictable during playback due to non-reproducible behavior of the cachemines and pipelines. Therefore, they are not possible to use as unique markers.

Ett alternativ är att använda mjukvarubaserade instruktionsräknare (SlC) som räknar bakåtgrenar och underrutinanrop i maskinkoden. För att den- 10 15 20 25 30 35 524 799 17 na lösning skall fungera så måste emellertid kompilatortillverkaren erbju- da detta särdrag eller speciella målverktyg som kan söka igenom ma- skinkoden och instrumentera alla bakåtgrenar och underrutinanrop. Detta sätt påverkar även prestandan, eftersom den vanligen allokerar ett eller flera CPU-register till instruktionsräknaren och därför minskar möjligheten till kompilatoroptimeringar.An alternative is to use software-based instruction counters (SlC) that count backward branches and subroutine calls in the machine code. For this solution to work, however, the compiler manufacturer must offer this feature or special targeting tool that can scan the machine code and instrument all backward branches and subroutine calls. This method also affects performance, as it usually allocates one or more CPU registers to the instruction counter and therefore reduces the possibility of compiler optimizations.

Mer lämpligt är att använda en registerchecksumma (CHKSUM) som den väsentligen unika markören, varvid nämnda registerchecksumma är summan av innehållet i samtliga register vid brytpunktstillfället dividerat med antalet register.It is more appropriate to use a register check sum (CHKSUM) as the substantially unique marker, said register check sum being the sum of the contents of all registers at the time of breaking point divided by the number of registers.

Alternativt så kan en checksumma från användarstacken beräknas, t.ex. som definierad av omfattningen av den för närvarande exekverade funk- fionen.Alternatively, a checksum from the user stack can be calculated, e.g. as defined by the scope of the currently executed function fi.

Alternativt kan stackpekaren (SP) användas, vilket underlättar särskilj- ning mellan funktionsanrop i samband med underrutin- eller rekursiva anrop.Alternatively, the stack pointer (SP) can be used, which facilitates the distinction between function calls in connection with subroutine or recursive calls.

I en föredragen utföringsform kan både registerchecksumman och stack- pekaren användas tillsammans så att markören definieras av tupeln PC, SP, CHKSUM>. Denna kombination är tillräckligt unik, eftersom de flesta kompilatorer strävar efter att lägga loopräknare etc. i register för att optimera exekveringstiden. Ett krav för terminerande processer är dock att alla register initialiseras till noll när en process aktiveras. För icke- terminerande processer där kontrollflödet begränsas av en oändlig loop och blockerande systemanrop, krävs att processen periodiskt återställer sina register. En terminerande process motsvarar ett funktionsanrop, vil- ket termineras genom returnering av det minnesutrymme som den har använt under exekvering. Därför har en terminerande process ingen kontext mellan terminering och nästa anrop. En icke-terminerande pro- cess har alltid en kontext, motsvarande ett funktionsanrop som aldrig av- slutas. För icke-terminerande processer blir därför registrena orena efter en tid. 10 15 20 25 30 35 524 799 18 Givet en inspelad historia så måste en initial startpunkt hittas, dvs. ett tillstånd från vilket ett återuppspelningstillfälle kan startas. Det finns en mängd krav på ett sådant tillstånd, flera av dessa beror på systemarkitek- turen. Om systemet använder meddelandeöverföring så måste det globa- la starttillståndet vara överföringstomt, dvs. inget meddelande får vara under överföring, när återexekveringen startas. Om ett meddelande kan vara under överföring när återuppspelningstillfället startas så måste alla meddelanden som skickas mellan noder spelas in. För varje multipro- cessnod i systemet måste, om det lokala tillståndet kan ha föregripna el- ler exekverande processer, innehållet i sådana processer spelas in.In a preferred embodiment, both the register check sum and the stack pointer can be used together so that the cursor is defined by the tuple PC, SP, CHKSUM>. This combination is unique enough, as most compilers strive to put loop counters, etc. in registers to optimize the execution time. A requirement for terminating processes, however, is that all registers are initialized to zero when a process is activated. For non-terminating processes where the control flow is limited by an infinite loop and blocking system calls, the process is required to periodically restore its registers. A terminating process corresponds to a function call, which is terminated by returning the memory space it has used during execution. Therefore, a termination process has no context between termination and the next call. A non-terminating process always has a context, corresponding to a function call that never ends. For non-terminating processes, the registers therefore become unclean after a while. 10 15 20 25 30 35 524 799 18 Given a recorded story, an initial starting point must be found, ie. a state from which a replay can be started. There are a number of requirements for such a permit, several of which depend on the system architecture. If the system uses message transmission, the global start state must be transmission empty, ie. no message can be transmitted when the re-execution is started. If a message may be in transmission when the replay is started, all messages sent between nodes must be recorded. For each multi-process node in the system, if the local state can have anticipated or executing processes, the contents of such processes must be recorded.

Den föredragna tekniken om registerchecksummemarkörer används är, enligt uppfinningen, att konstruera systemet så att det periodiskt når en punkt, kallad en sysslolös punkt, i exekveringen där ingen process är fö- regripen eller exekverande och där inget meddelande är under överfö- ring. Betrakta ett system där alla processer är av terminerande beskaf- fenhet, dvs. de anropas av RTOS kärnan som om de vore underrutiner, och när de avslutas så återlämnar de kontrollen till kärnan. Vid en sysslo- lös punkt vet vi att nästa process som startar sin exekvering kommer att befinna sig i ett definierat tillstånd, vanligen med alla CPU-register satta till O. Det enda som behöver göras, utöver att tillhandahålla korrekta ex- terna indata och meddelanden, är att tillhandahålla processen med kor- rekta värden på de globala och statiska variabler som den använder.The preferred technique for using register checksum markers is, according to the invention, to design the system so that it periodically reaches a point, called an idle point, in execution where no process is anticipated or executing and where no message is being transmitted. Consider a system where all processes are of a terminating nature, ie. they are called by the RTOS kernel as if they were subroutines, and when terminated they return control to the kernel. At an idle point, we know that the next process that starts its execution will be in a defined state, usually with all CPU registers set to 0. The only thing that needs to be done, in addition to providing correct external input data and messages , is to provide the process with the correct values of the global and static variables it uses.

Om systemet har en icke-terminerande processmodell så kan process- styrningsflödet transformeras till en ekvivalent terminerande process. Till exempel representerar nedanstående kod en icke terminerande process i ett typiskt realtidssystem: Medan (FÖREVIGT) { Tillståndsvariabler; Vänta(signal); } Genom en enkel modifiering kan koden omformas till en ekvivalent termi- nerande process genom att flytta de lokala variablerna till ett separat block, eller företrädesvis till en separat funktion, efter vänta()- systemanropet, och således tilltvinga inspelning av tillståndsvariablerna 10 15 20 25 30 35 . - - 524 799 19 när de av-allokeras när de lämnar blocket. Följaktligen krävs en återställ- ning av tillstàndsvariablerna, precis som fallet skulle vara för termineran- de process. l detta fall utgörs återställningen av återställning av instruk- tionsräknaren eller processor-register. Återställningen av processor- registren är nödvändigt för att bortta skadligt registerinnehàll från föregå- ende beräkningar. Koden nedan är ett exempel pà resultatet av en om- formad version av koden ovan: Medan(FÖREVlGT){ Återställ_umarkör(); vänta(SlGNAL); anropa { tillståndsvariabler; återställ(tillstàndsvariabler); spara(ti|lståndsvariabler); } } eller alternativt l\/ledan(FÖREVlGT){ {tillståndsvariabler; vänta(signal); tillståndsvariabler= f(tillståndsvarlabler); } àterställ= umarkör(); } Nackdelen med metoden ovan är att den belastar systemutvecklaren el- ler analysverktyg med att låta dem identifiera vilken tillståndsinformation som behöver spelas in under exekveringen. Å andra sidan, om övervak- ningen i mjukvaruinstrumenterade system görs på rätt sätt, så är mer- kostnaden i processer och minnesutnyttjande minimal.If the system has a non-terminating process model, the process control flow can be transformed into an equivalent terminating process. For example, the code below represents a non-terminating process in a typical real-time system: While (PRESENT) {State variables; Wait (signal); } By a simple modification, the code can be transformed into an equivalent terminating process by moving the local variables to a separate block, or preferably to a separate function, after the wait () system call, thus forcing recording of the state variables 10 15 20 25 30 35. - - 524 799 19 when un-allocated when leaving the block. Consequently, a reset of the state variables is required, just as would be the case for the terminating process. In this case, the reset consists of resetting the instruction counter or processor register. Restoring the processor registers is necessary to remove malicious register contents from previous calculations. The code below is an example of the result of a redesigned version of the code above: While (PREFERRED) {Reset_marker (); wait (SlGNAL); call {state variables; reset (state variables); save (state variables); }} or alternatively l \ / ledan (PREFERRED) {{state variables; wait (signal); state variables = f (state variables); } reset = unmark (); } The disadvantage of the above method is that it burdens the system developer or analysis tool with letting them identify which state information needs to be recorded during execution. On the other hand, if the monitoring in software-instrumented systems is done correctly, the additional cost in processes and memory utilization is minimal.

Om en användarstackchecksummebaserad markör används kan ovan- stående metod elimineras, eftersom ingen kodomformning behövs. Re- gisterkontamineringen rensas varje gång en funktion anropas, av kompi- 10 15 20 25 30 - e ' 524 799 = 20 E': '- .- latorgenererad kod. En annan fördel är att denna markör kan inkludera Ioopvariabler som lagras på stacken. Detta är således den föredragna utföringsformen av uppfinningen. Nackdelen med registerchecksumme- metoden är att den är beräkningsmässigt mer krävande.If a user stack checksum-based marker is used, the above method can be eliminated, since no code transformation is required. The register contamination is cleared each time a function is called, by compiler 10 e - 524 799 = 20 E ': Another advantage is that this marker can include Ioop variables stored on the stack. This is thus the preferred embodiment of the invention. The disadvantage of the register check sum method is that it is computationally more demanding.

Alternativt kan startpunkten för återuppspelningstillfället väljas när syste- met startas. I detta tillstånd är all statisk systeminformation känd, och återuppspelningstillfället kan startas med variablerna satta till sina ur- sprungsvärden. En nackdel med denna lösning är att den kräver en väl- digt stor inspelningsbuffert. Dessutom kan återuppspelningen av system- beteendet fram till en krasch vara mycket tidsödande om systemet har exekverat i flera dagar, eller tom månader, innan kraschen. Detta skulle kunna undvikas med en off-line-ögonblicksbilds-metod som under ett åte- ruppspelningstillfälle periodiskt sparar systemtillstàndet i minnet, tillgäng- ligt för hämtning under återexekvering. Detta skulle göra det möjligt att återuppspela tillfället en gång från början och ta ögonblicksbilder under exekveringens gång. l efterföljande exekveringar kan var och en av des- sa ögonblicksbilder användas som en utgångspunkt för återuppspelning.Alternatively, the start point of the replay can be selected when the system is started. In this state, all static system information is known, and the playback time can be started with the variables set to their original values. A disadvantage of this solution is that it requires a very large recording buffer. In addition, replaying system behavior up to a crash can be very time consuming if the system has been running for several days, or even months, before the crash. This could be avoided with an off-line snapshot method that periodically saves the system state in memory during a replay, available for retrieval during re-execution. This would allow you to replay the occasion once from the beginning and take snapshots during the execution. In subsequent executions, each of these snapshots can be used as a starting point for replay.

En annan alternativ metod för att hitta uppspelningens startpunkter är att periodiskt ta ögonblicksbilder av systemtillstàndet under körningen. Sy- stemtillståndet skulle kunna definieras, till exempel av RTOS köer (be- redskaps, exekverande, blockerad etc.) och processernas kontext. Ögonblicksbufferten kommer då att tillhandahålla ett antal kända system- tillstånd från vilka ett uppspelningstillfälle kan startas. Fördelen med detta förfarande är att det räcker med inspelning av en relativt kort historia.Another alternative method of finding the starting points of playback is to periodically take snapshots of the system state while driving. The system state could be defined, for example, by RTOS queues (standby, execution, blocked, etc.) and the context of the processes. The Instant Buffer will then provide a number of known system states from which a playback time can be started. The advantage of this procedure is that it is sufficient to record a relatively short story.

Rent praktiskt, för att kunna garantera att historien innehåller en giltig startpunkt så måste historien vara tillräckligt lång för att omfatta åtmin- stone en ögonblicksbild. Detta garanterar dock bara förekomsten av en giltig startpunkt och inte att felorsaken finns med. Periodiska dumpningar av hela systemtillstånd kommer dessutom att kräva avsevärd exekve- ringstid, vilket kan vara oacceptabelt för många realtidssystem.In practical terms, in order to guarantee that the story contains a valid starting point, the story must be long enough to include at least a snapshot. However, this only guarantees the presence of a valid starting point and not that the cause of the error is included. Periodic dumping of entire system permits will also require considerable execution time, which may be unacceptable for many real-time systems.

Claims (9)

10 15 20 25 30 35 524 799 21 PATENTKRAV10 15 20 25 30 35 524 799 21 PATENT REQUIREMENTS 1. Ett förfarande för debuggning av enkel- och multiprocessreal- tidssystem som exekverar på en enkelprocessor, en multiprocessor eller ett distribuerat system, och innefattar stegen: o exekvering av ett datorsystem som innefattar den programkod som skall debuggas o inspelning av alla signifikanta händelser under exekveringen av systemet o upprättande av en historia genom analysering och korrelering av de inspelade händelserna och insättning av brytpunkter vid varje signifikant händelse, varvid varje brytpunkt i programmet definieras av en brytpunktsidentifierare som innefattar en väsentligen unik markör, o återuppspelning av historien i en debugger som stödjer brytpunkter och makron, ändring av systemets tillstånd vid programpositioner där brytpunkter har insatts för att emulera den inspelade exekve- nngen, kännetecknat av att den åtminstone en väsentligen unika markören inne- fattar en checksumma.A method for debugging single and multiprocess real-time systems executing on a single processor, a multiprocessor or a distributed system, and comprising the steps of: o executing a computer system comprising the program code to be debugged o recording all significant events during execution of the system o establishing a history by analyzing and correlating the recorded events and inserting breakpoints at each significant event, each breakpoint in the program being defined by a breakpoint identifier that includes a substantially unique marker, o replaying the history in a debugger that supports breakpoints and macros, changing the state of the system at program positions where breakpoints have been inserted to emulate the recorded execution, characterized in that the at least one substantially unique cursor comprises a checksum. 2. Ett förfarande enligt patentkravet 1, varvid brytpunktsidentifie- raren innefattar programräknaren och systemtiden, tillsammans med den väsentligen unika markören.A method according to claim 1, wherein the breakpoint identifier comprises the program counter and the system time, together with the substantially unique cursor. 3. Ett förfarande enligt patentkravet 1 eller 2, varvid den åtmin- stone en väsentligen unika markören innefattar en checksumma som in- nefattar summan av innehållet i samtliga register.A method according to claim 1 or 2, wherein the at least one substantially unique marker comprises a checksum comprising the sum of the contents of all registers. 4. Ett förfarande enligt patentkravet 1 eller 2, varvid den åtmin- stone en unika markören innefattar en checksumma som innefattar summan av innehållet i användarstacken, inkluderande t.ex. omfattning- en av den funktion som för närvarande exekveras.A method according to claim 1 or 2, wherein the at least one unique marker comprises a checksum comprising the sum of the contents of the user stack, including e.g. the scope of the function currently being executed. 5. Ett förfarande enligt något av föregående patentkrav, varvid den väsentligen unika markören innefattar en stackpekare. 10 15 20 25 30 . - - 524 7229A method according to any one of the preceding claims, wherein the substantially unique marker comprises a stack pointer. 10 15 20 25 30. - - 524 7229 6. Ett förfarande enligt patentkravet 1 eller 2, varvid den väsent- ligen unika markören innefattar av en instruktionsräknare (IC).A method according to claim 1 or 2, wherein the substantially unique marker comprises of an instruction counter (IC). 7. Ett förfarande i enlighet med något av föregående patentkrav, innefattande steget exekvering av förändringsemulerande kod vid åtmin- stone en brytpunkt för att emulera den inspelade förändringen i program- flödet när den exekveras i systemet.A method according to any one of the preceding claims, comprising the step of executing change emulation code at at least one breakpoint to emulate the recorded change in the program flow when executed in the system. 8. En datorprogramprodukt för användning vid debuggning av en programkod i ett datorsystem, varvid nämnda datorsystem innefattar o medel för inspelning av alla signifikanta händelser vid exekvering av systemet o medel för att addera en brytpunktsidentifierare för varje brytpunkt o medel för att upprätta en historia genom analysering och korrele- ring av de inspelade händelserna, varvid nämnda datorprogram är anordnat att förändra systemets tillstånd vid positioner i program- met som kräver debugging medan historien återuppspelas, varvid medlet för addering av en brytpunktsidentifierare är anordnat att addera en brytpunktsidentifierare som innefattar åtminstone en väsentligen unik markör, och att den ytterligare innefattar o medel för återexekvering av den upprättade historien o medel för att vidta av lämpliga åtgärder när en brytpunktshändelse inträffar för att säkra att historien troget återexekveras, och som kännetecknas av att den åtminstone en väsentligen unika mar- kören innefattar en checksumma.A computer program product for use in debugging a program code in a computer system, said computer system comprising o means for recording all significant events at execution of the system o means for adding a break point identifier for each break point o means for establishing a history by analysis and correlating the recorded events, said computer program being arranged to change the state of the system at positions in the program requiring debugging while the playback is being played, the means for adding a breakpoint identifier being arranged to add a breakpoint identifier comprising at least one substantially unique marker, and that it further comprises means for re-execution of the established history and means for taking appropriate action when a breakpoint event occurs to ensure that the history is faithfully re-executed, and which is characterized in that it comprises at least one substantially unique marker. r a checksum. 9. En datorprogramprodukt enligt patentkravet 8, anordnad att återspela historien i det ursprungliga systemet, och som att medlet för återexekvering av historien som initieras vid klockslagsiniti- erade schemahändelser, systemanrop och avbrott, är anordnat att exekveras vid åtminstone en brytpunkt.A computer program product according to claim 8, arranged to replay the history of the original system, and wherein the means for re-executing the history initiated at time-initiated schedule events, system calls and interruptions is arranged to be executed at at least one breakpoint.
SE0203544A 2002-11-29 2002-11-29 Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum SE524799C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
SE0203544A SE524799C2 (en) 2002-11-29 2002-11-29 Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE0203544A SE524799C2 (en) 2002-11-29 2002-11-29 Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum

Publications (3)

Publication Number Publication Date
SE0203544D0 SE0203544D0 (en) 2002-11-29
SE0203544L SE0203544L (en) 2004-05-30
SE524799C2 true SE524799C2 (en) 2004-10-05

Family

ID=20289721

Family Applications (1)

Application Number Title Priority Date Filing Date
SE0203544A SE524799C2 (en) 2002-11-29 2002-11-29 Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum

Country Status (1)

Country Link
SE (1) SE524799C2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9881823B2 (en) 2002-06-19 2018-01-30 Murata Machinery Ltd. Automated material handling system for semiconductor manufacturing based on a combination of vertical carousels and overhead hoists
US10198341B2 (en) 2016-12-21 2019-02-05 Microsoft Technology Licensing, Llc Parallel replay of executable code
US10957569B2 (en) 2002-10-11 2021-03-23 Murata Machinery Ltd. Access to one or more levels of material storage shelves by an overhead hoist transport vehicle from a single track position

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9881823B2 (en) 2002-06-19 2018-01-30 Murata Machinery Ltd. Automated material handling system for semiconductor manufacturing based on a combination of vertical carousels and overhead hoists
US10141212B2 (en) 2002-06-19 2018-11-27 Murata Machinery Ltd. Automated material handling system for semiconductor manufacturing based on a combination of vertical carousels and overhead hoists
US10147627B2 (en) 2002-06-19 2018-12-04 Murata Machinery Ltd. Automated material handling system for semiconductor manufacturing based on a combination of vertical carousels and overhead hoists
US10381251B2 (en) 2002-06-19 2019-08-13 Murata Machinery Ltd. Automated material handling system for semiconductor manufacturing based on a combination of vertical carousels and overhead hoists
US10957569B2 (en) 2002-10-11 2021-03-23 Murata Machinery Ltd. Access to one or more levels of material storage shelves by an overhead hoist transport vehicle from a single track position
US10198341B2 (en) 2016-12-21 2019-02-05 Microsoft Technology Licensing, Llc Parallel replay of executable code

Also Published As

Publication number Publication date
SE0203544L (en) 2004-05-30
SE0203544D0 (en) 2002-11-29

Similar Documents

Publication Publication Date Title
EP3785124B1 (en) Memory validity states in time-travel debugging
Leblanc Debugging parallel programs with instant replay
US8903703B2 (en) Dynamically adjusting speed versus accuracy of computer platform simulation
Thane et al. Using deterministic replay for debugging of distributed real-time systems
Tsai et al. A noninterference monitoring and replay mechanism for real-time software testing and debugging
US8276127B2 (en) Devices, methods and computer program products for reverse execution of a simulation
US7716031B2 (en) Interface converter for unified view of multiple computer system simulations
Fowler et al. An integrated approach to parallel program debugging and performance analysis onlarge-scale multiprocessors
KR20070109432A (en) Apparatus and method for kernel aware debugging
Thane et al. Replay debugging of real-time systems using time machines
Krishnamurthy et al. A design methodology for software fault injection in embedded systems
SE524799C2 (en) Debugging method for single or multi process real time systems, identifies significant event break off point with unique marker comprising check sum
Keefe Hierarchical control programs for systems evaluation
Kuenning Kitrace: Precise interactive measurement of operating systems kernels
Flanagan A new methodology for accurate trace collection and its application to memory hierarchy performance modeling
Lazzerini et al. Event-driven debugging for distributed software
Tsai et al. A replay mechanism for non-interference real-time software testing and debugging
Gentleman et al. Hardware assisted high level debugging: preliminary draft
kkkkLLL SAAAAA An efficient technique for tracking nondeterministic execution and its applications
El Shobaki On-chip monitoring for non-intrusive hardware/software observability
Kra A cross-debugging method for hardware/software co-design environments
WO2006091785A1 (en) Interface converter for unified view of multiple computer system simulations
Calvez et al. Real-time behavior monitoring for multi-processor systems
Sienkiewicz et al. DDB: a distributed debugger based on replay
Chen et al. Kernel instrumentation tools and techniques

Legal Events

Date Code Title Description
NUG Patent has lapsed