WO2003025753A2 - Method for producing an error detection message in a portable data medium - Google Patents

Method for producing an error detection message in a portable data medium Download PDF

Info

Publication number
WO2003025753A2
WO2003025753A2 PCT/EP2002/010085 EP0210085W WO03025753A2 WO 2003025753 A2 WO2003025753 A2 WO 2003025753A2 EP 0210085 W EP0210085 W EP 0210085W WO 03025753 A2 WO03025753 A2 WO 03025753A2
Authority
WO
WIPO (PCT)
Prior art keywords
program
portable data
data carrier
source code
troubleshooting
Prior art date
Application number
PCT/EP2002/010085
Other languages
German (de)
French (fr)
Other versions
WO2003025753A3 (en
Inventor
Georg Kramposthuber
Thomas Stocker
Original Assignee
Giesecke & Devrient Gmbh
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 Giesecke & Devrient Gmbh filed Critical Giesecke & Devrient Gmbh
Priority to EP02772281A priority Critical patent/EP1436703A2/en
Publication of WO2003025753A2 publication Critical patent/WO2003025753A2/en
Publication of WO2003025753A3 publication Critical patent/WO2003025753A3/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
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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
    • 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/3648Software debugging using additional hardware

Definitions

  • the invention relates generally to the field of software development for portable data carriers, in particular in the form of chip cards, and more particularly to the field of troubleshooting software that is intended for execution by a processor of a portable data carrier or a chip card.
  • Portable data carriers in the form of chip cards are well known in many configurations. For example, they become
  • Access control or used in payment transactions usually have a semiconductor chip with a processor and at least one memory.
  • chip cards are also available in other designs, e.g. as a keychain or rings.
  • the term “chip card” is used to refer to all of these configurations.
  • chip cards which provide coded error information on the chip card when an error occurs during program execution.
  • This error information must be evaluated by experts, assigned to the respective sections in the source code of the program being executed, and then passed on to the actual program developer. This process is cumbersome and in turn prone to errors.
  • the invention is intended to do this Contribute to increasing the reliability of troubleshooting in chip card programs and / or reducing the effort associated with troubleshooting and / or reducing or avoiding the effort associated with programming a software emulator.
  • the invention is based on the basic idea of storing, at least during the design process, the data required for convenient troubleshooting in the chip card itself and the processor of the chip card ⁇ for accessing this data, for generating a fault-finding message understandable for the programmer and for output use this message as the output data record of the chip card.
  • At least one transmission table with a plurality of entries is provided as part of the assignment data stored on the chip card. Each entry is preferably assigned to a range of the program counter count. In those program sections for which the troubleshooting is to be carried out, at least one entry in the transmission table is preferably provided for each program counter reading.
  • the entries in the transmission table preferably each contain at least one entry relating to the source code of the program being executed. For example, the number of a source code line and / or the name of a source code construct and / or a reference to a name of a source code construct can be contained in each entry of the transfer table. This information preferably relates to that area, in particular that line of the source code, which corresponds to the program counter reading for which the entry in the transfer table is intended.
  • a “source code construct” is to be understood in particular, but not exclusively, to mean the names of variables, constants, functions, procedures, methods and modules.
  • the term “reference” is to be understood here in particular, but not exclusively, as pointers, references, identifiers (tags) or index numbers.
  • APDU application protocol data unit
  • the event evaluated in the troubleshooting is preferably the occurrence of an error or an exception or an interruption. These events can be triggered at the hardware or software level. If a software exception, e.g. If an access attempt occurs outside the boundaries of a memory field, this is preferably first processed by a customary exception handler in order to trap exceptions that may be provided in the normal program flow. In preferred embodiments, the occurrence of an exception only leads to the execution of the method according to the invention if it is ensured that the exception indicates an error or an unintended problem.
  • the occurrence of the predetermined event is monitored on the chip card during program execution.
  • program is to be understood in the broadest sense as a sequence of commands for the chip card processor.
  • preferred embodiments of the invention intercept error events that occur during the execution of an application program and / or a runtime environment, in particular a virtual machine, and / or an operating system routine including hardware-related drivers of the chip card ,
  • the program counter evaluated according to the invention is the program counter register of the processor or a virtual program counter of a runtime environment, which can be implemented by a further processor register or as at least one word in the memory of the chip card.
  • a virtual program counter can in particular be part of a virtual machine, for example a Java TM virtual machine.
  • the functionality according to the invention is used only for the purpose of troubleshooting during the development phase. This functionality can preferably be removed after completion of the program development in order to avoid security gaps.
  • the error handling routine required for executing the method and / or the assignment data are included in a preparatory step as a so-called patch
  • a method and a computer program product that automatically generate such error handling routines and / or mapping data and preferably provide them in the form of a patch are also considered to be within the scope of the invention.
  • the error handling routine can preferably be connected to at least one program routine of the chip card via one or more exit points - and corresponding return points.
  • This program routine can in particular be a runtime environment in which exceptions are processed while a user program is running.
  • the chip card is preferably functional in the same way with and without the patch applied, except for error handling.
  • FIG. 1 is a schematic representation of the functional layers of a chip card and the data flow according to an embodiment of the invention
  • FIG. 2 shows the data structures used for storing the assignment data in the exemplary embodiment from FIG. 1, and
  • FIG. 3 shows a flow diagram of the method sequence in the exemplary embodiment from FIG. 1.
  • FIG. 1 shows a portable data carrier in the form of a chip card 10, which corresponds to the exemplary embodiment described here
  • the chip card 10 is designed in accordance with version 2.1.1 of the Java Cßrrf TM standard from Sun Microsystems, Inc. Documentation about this standard can be found on the Internet at http://java.sun.com/products/javacard.
  • other configurations of the chip card 10 are provided, which can generally be any smart card provided with a microprocessor or microcontroller.
  • a hardware layer 12 has a processor 14, a memory 16 and other modules, not shown, which are integrated in a single semiconductor chip.
  • the memory 16 is divided into several areas, for example a program memory, a P ⁇ fc / i memory, a working memory or the like, which are used in suitable technologies, for example as a mask-programmed ROM, EEPROM, RAM, etc. are implemented.
  • the processor 14 has several registers, including a program counter 18.
  • the elements of the hardware layer 12 are known per se, except for the programming of the memory 16, which will be described in detail below.
  • a hardware-related operating system 20 is based on the hardware layer 12 and in particular provides drivers for modules of the hardware layer 12 as well as basic routines for file system administration and input and output routines.
  • a VM layer 22 is set up on the hardware-related operating system 20, which provides a virtual machine 24 - here abbreviated to" VM ".
  • the virtual machine 24 is generally a Program which simulates a different, generally standardized environment on the given chip card hardware
  • the virtual machine 24 is a Java TM virtual machine, as described in the document “Java Card TM 2.1.1 Virtual Machine Specification”, Revision 1.0 dated May 18, 2000 (available at http://java.sun.com/products/javacard).
  • virtual machine 24 may have other features or may be absent.
  • the virtual machine 24 has a virtual program counter 26, which is implemented by a register of the processor 14 or by means of the memory 16.
  • An exception processing module 28 is also provided in the virtual machine 24.
  • the exception processing module 28 contains program routines that are called when an exception event occurs. The associated process steps are described in more detail below.
  • An application program 32 is arranged in an application program layer 34. The application program 32 uses the interfaces provided by the API layer 30 in order to implement the desired function for the user of the chip card 10.
  • the API layer 30 corresponds to the specification in the document "Java Card TM 2.2.1 Application Programming Interface", revision 1.0 of May 18, 2000 (available at the address given above), and the application program 32 is an im Byte TM present Java TM cardlet (CAP). Only one application program 32 is shown by way of example in FIG. 1, but if the chip card 10 is sufficiently powerful, several application programs 32 can also be loaded into the memory 16 and executed in parallel.
  • CAP Java TM cardlet
  • the components and program components of the chip card 10 described so far are known per se.
  • the present exemplary embodiment of the invention relates to the functionality described in detail below, which makes it possible to generate a message intended for troubleshooting as output data record 38 of the chip card 10.
  • an error handling routine 40 is provided in the VM layer 22.
  • the error handling routine 40 is an optional addition - in the form of a patch - to the virtual machine 24, more precisely to its exception processing module 28, tethered.
  • the exception processing module 28 has a exit point 42, which branches to the error handling routine 40.
  • a return point 44 of the exception processing module 28 After the end of processing in the error handling routine 40, there is a return to a return point 44 of the exception processing module 28. While only one exit and return point 42, 44 is shown in FIG. 1, further such points are in the exception processing module in alternative embodiments 28 or in other program routines stored on the chip card 10, for example those of the operating system 20 or the application program 32.
  • the error handling routine 40 has access to assignment data 46.
  • the method is used when searching for errors in the application program 32.
  • the assignment data 46 therefore contain information relating to the source code of the application program 32, and the assignment data 46 are loaded into the memory 16 of the chip card 10 together with the application program 32. For these reasons, the assignment data 46 is shown in the application program layer 34 in the conceptual view of FIG. 1. In alternative embodiments in which the troubleshooting in other program routines of the chip card 10 is to be supported, e.g. in the virtual
  • the assignment data 46 relate to the source code of these program routines.
  • the structures used for storing the assignment data 46 are roughly indicated in FIG. 1 and shown in more detail in FIG. 2.
  • a transmission table 48 and a constant pool 50 are provided.
  • the transfer table 48 contains a plurality of entries, which are shown as lines in FIG. 2.
  • An entry is provided with the reference number 52 as an example.
  • Each entry 52 defines that area of the virtual program counter 26 (VPC) or, in alternative embodiments, the program counter 18 (PC) for which the entry 52 is provided.
  • the limits of this area start and end are specified in two fields 52A, 52B.
  • each entry 52 has a field 52C which contains the line number of that source code line which corresponds to the area defined by the fields 52A, 52B. For example, if 32 byfecotiss instructions with addresses 456 to 466 were generated when line 123 of the source code of the application program was translated, fields 52A, 52B and 52C would contain the values 456, 466 and 123.
  • each entry 52 in the transfer table 48 contains a reference to an entry 54 in the constant pool 50.
  • the constant pool 50 has a plurality of entries; in FIG. 2 only the entry 54 is provided with a reference symbol as an example.
  • Each entry 54 in the constant pool 50 contains, in a text field 54A, the name of a construct in the source code of the program being debugged — here the application program 32.
  • Another field 54B denotes the end of the name.
  • an indication of the length of text field 54A arranged in front of text field 54A can also be used.
  • names of methods or functions or procedures or modules from the source code of the application program 32 are primarily given in the text fields 54A of the constant pool 50.
  • the reference in field 52D of the entry in the transfer table 48 designates that entry 54 in the constant pool 50 which contains the name of the method or function or procedure or the module from the source code of the application program 32 in which the program counter range defined in the entry 52 is located located.
  • This method or function procedure or module also contains the source code line specified in entry 52 in field 52C.
  • further textual information relating to the source code of the executed program is contained in the constant pool 50 or in other structures of the assignment data 46 or in other fields of the memory 16.
  • This can e.g. be symbolic names of variables or constants or parameters, or names of structure units of the program.
  • the memory 16 preferably also contains textual descriptions of the possible causes of error or exception events. Conceptually, these descriptions can be assigned to the error handling routine 40, but they can also be contained in the constant pool 50 or in other data structures.
  • the references stored in the fields 52D of the transmission table are pointers which point to the start of the corresponding entry 54 in the constant pool 50.
  • the references in the fields 52D of the transfer table 48 are then not pointers, but rather corresponding identifiers which correspond to the respective identifiers in the constant pool 50.
  • the data of the constant pool 50 are stored directly in the transmission table 48.
  • the source code of the application program 32 is first translated in the exemplary embodiment described here. Furthermore - through an additional program that is integrated into the translator or designed as an external program may be - the mapping data 46, the error handling routine 40 and the data required to install the exit point 42 are determined and provided in the form of a patch. This patch is then loaded into a conventional chip card 10.
  • the application program 32 can be loaded into the chip card 10 on this occasion or before or only later.
  • the assignment data 46 is always loaded together with the application program 32, while the error handling routine 40 is loaded into the chip card 10 together with the virtual machine 24.
  • step 60 in FIG. 3 If, during the execution of the program by the processor 14 of the chip card 10, an exception or, in alternative embodiments, an interrupt occurs (step 60 in FIG. 3), this leads to a call to the exception processing module 28 first of all checks whether the exception is due to a program error or should be caught in the running program (trapping). In the former case, a jump is made via the exit point 42 to the error handling routine 40.
  • the error handling routine 40 first accesses the virtual program counter 26, step 62 in FIG. 3, in order to determine its counter reading.
  • the program counter 18 is accessed instead, as is indicated in FIG. 1 by a dashed arrow.
  • Step 64 in FIG. 3 is then searched for that entry 52 in the transmission table 48 which is assigned to the current program counter reading.
  • the transfer table 48 can be run through in sequence, or a binary search method can be used if the entries in the transfer table 48 are sorted, for example, by increasing values in the fields 52A.
  • the found entry 52 in the transmission table 48 contains in field 52C the line in the source code during the execution of which the runtime error occurred.
  • step 68 the message provided for troubleshooting is generated from the two items of information determined in this way, which relate to the source code of the program being executed.
  • this message can be, for example:
  • a symbolic description of the cause of the error is preferably generated within the chip card 10, so that the message is then e.g. would read:
  • the message generated in step 68 is output in a final step 70 as an output data record 38, in particular in the form of a response APDU, from the chip card 10. It can be from a usual terminal received and provides the developer with valuable information for program development without the need for additional hardware.
  • the exit point 42 is removed again in order to rule out possible safety risks.
  • the error handling routine 40 and the assignment data 46 are preferably also removed - or not even loaded into the chip card 10 at all - so that the finished product has as much free memory 16 as possible.
  • the invention simplifies the test sequence, as a result of which considerable cost savings are possible or the quality of the finished product can be increased by expanding the tests.

Abstract

The invention concerns a method for producing an error detection message when executing a programme on a smart card (10). Said method comprises the following steps: identifying a predetermined event; reading a programme counter (18, 26); associating with the state of the programme counter at least an information concerning the executed programme source code; generating the error detection message using said data and outputting said message in a recording of output data (38) of the smart card (10). The invention also concerns a smart card, a method for providing an error processing routine (40) and/or attribution data (46) and a programme product, which exhibit related characteristics. The invention enables to increase error detection reliability when executing programmes on smart cards, thereby reducing costs related to error detection.

Description

Erzeugen einer Nachricht zur Fehlersuche bei einem tragbaren Datenträger Generate a troubleshooting message for a portable disk
Die Erfindung betrifft allgemein das Gebiet der Softwareentwicklung für tragbare Datenträger, insbesondere in Gestalt von Chipkarten, und spezieller das Gebiet der Fehlersuche bei Software, die zur Ausführung durch einen Prozessor einen tragbaren Datenträger, respektive eine Chipkarte vorgesehen ist.The invention relates generally to the field of software development for portable data carriers, in particular in the form of chip cards, and more particularly to the field of troubleshooting software that is intended for execution by a processor of a portable data carrier or a chip card.
Tragbare Datenträger in Gestalt von Chipkarten sind in vielerlei Ausgestaltungen gut bekannt. Sie werden beispielsweise zurPortable data carriers in the form of chip cards are well known in many configurations. For example, they become
Zugangskontrolle oder im Zahlungsverkehr eingesetzt und weisen in der Regel einen Halbleiterchip mit einem Prozessor und mindestens einem Speicher auf. Neben den üblichen Bauformen in Scheckkartengröße oder als kleine Kartenmodule, z.B. SIMs - subscriber identity modules bei Mobiltelefonen, werden Chipkarten auch in anderen Bauformen, z.B. als Schlüsselanhänger oder Ringe, hergestellt. Unter dem Begriff "Chipkarte" sollen im vorliegenden Text alle diese Ausgestaltungen mit bezeichnet werden.Access control or used in payment transactions and usually have a semiconductor chip with a processor and at least one memory. In addition to the usual designs in credit card size or as small card modules, e.g. SIMs - subscriber identity modules for mobile phones, chip cards are also available in other designs, e.g. as a keychain or rings. In the present text, the term “chip card” is used to refer to all of these configurations.
An die auf einer Chipkarte gespeicherte Software werden hohe Anforderungen im Hinblick auf Fehlerfreiheit oder weitgehende Fehlerfreiheit gestellt, weil - erstens - Chipkarten in der Regel für sicherheitskritische Anwendungen eingesetzt werden und weil - zweitens - das nachträgliche Rückrufen bereits ausgegebener Chipkarten mit hohen Kosten verbunden ist. Die zunehmende Leistungsfähigkeit von Chipkarten hinsichtlich ihrer Rechenleistung und des verfügbaren Speichers hat zur Folge, daß sowohl der Umfang als auch die Komplexität der durch den Chipkartenprozessor ausgeführten Software immer weiter zunehmen. Dementsprechend wird es immer schwieriger, die genannten Anforderungen an die Fehlerfreiheit zu erfüllen. Neben sorgfältiger Arbeit bei der Programmentwicklung sind hierzu umfangreiche Fehlersuch- und Testverfahren erforderlich. Es ist bekannt, zum Testen von Programmen auf einer Chipkarte die Funktionen der Chipkartenhardware und der zu testenden Programme softwaremäßig zu simulieren, in einer sogenannten "Emulation". Eine Entwurfsumgebung, die eine solche Software-Emulation für Chipkarten gemäß dem Java C rd™-Standard ermöglicht, wird unter dem NamenHigh demands are placed on the software stored on a chip card with regard to being error-free or largely error-free because - firstly - chip cards are generally used for security-critical applications and - secondly - the subsequent recall of chip cards already issued is associated with high costs. The increasing performance of chip cards with regard to their computing power and the available memory has the consequence that both the scope and the complexity of the software executed by the chip card processor continue to increase. Accordingly, it is becoming increasingly difficult to meet the above-mentioned requirements for correctness. In addition to careful work in program development, extensive troubleshooting and test procedures are required. For testing programs on a chip card, it is known to simulate the functions of the chip card hardware and the programs to be tested in software, in a so-called "emulation". A design environment that enables such a software emulation for chip cards according to the Java C rd ™ standard is called
"Sm@rt Cafe® Professional" von der Anmelderin vertrieben (siehe Broschüre "Sm@rt Cafe® Professional - The Ultimate java Card Developers Suite", Giesecke & Devrient GmbH, Art. Nr. 288 1921, Oktober 1998)."Sm @ rt Cafe® Professional" distributed by the applicant (see brochure "Sm @ rt Cafe® Professional - The Ultimate java Card Developers Suite", Giesecke & Devrient GmbH, Art. No. 288 1921, October 1998).
Eine softwaremäßige Emulation stimmt aber in ihrer Funktionsweise nie vollständig mit der Funktion einer hinreichend komplexen Chipkarte überein, da sich Abweichungen bei der Nachbildung, die etwa darauf beruhen können, daß Fehler oder Eigenheiten der Chipkartenhardware nicht in der Emulation berücksichtigt wurden, nie ganz vermeiden lassen. Eine erfolgrei- ehe Programmausführung im Rahmen der Chipkarten-Emulation garantiert daher noch nicht die fehlerfreie Lauffähigkeit des Programms auf einer realen Chipkarte. Überdies erfordern die Entwicklung eines Chipkarten- Emulators und die ständige Anpassung an Änderungen der Hard- und Softwarekonfiguration der Chipkarte einen hohen Aufwand. .However, a software emulation never fully corresponds to the function of a sufficiently complex chip card, since deviations in the simulation, which may be due to the fact that errors or peculiarities of the chip card hardware were not taken into account in the emulation, can never be completely avoided. Successful program execution as part of chip card emulation does not therefore guarantee that the program will run correctly on a real chip card. In addition, the development of a chip card emulator and the constant adaptation to changes in the hardware and software configuration of the chip card require a great deal of effort. ,
Nach einem zumindest firmeninternen Stand der Technik der Anmelderin sind Chipkarten bekannt, die beim Auftreten eines Fehlers während der Programmausführung auf der Chipkarte kodierte Fehlerinformationen bereitstellen. Diese Fehlerinformationen müssen von Experten ausgewertet wer- den, den jeweiligen Abschnitten im Quellcode des ausgeführten Programms zugeordnet werden und dann an die eigentlichen Programmentwickler weitergeleitet werden. Dieses Verfahren ist umständlich und seinerseits fehleranfällig.According to an at least company-internal state of the art by the applicant, chip cards are known which provide coded error information on the chip card when an error occurs during program execution. This error information must be evaluated by experts, assigned to the respective sections in the source code of the program being executed, and then passed on to the actual program developer. This process is cumbersome and in turn prone to errors.
Es ist daher eine Aufgabe der Erfindung, die Probleme des Stands der Technik ganz oder teilweise zu vermeiden. Insbesondere soll die Erfindung dazu beitragen, die Zuverlässigkeit der Fehlersuche bei Chipkarten-Programmen zu erhöhen und/ oder den mit der Fehlersuche verbundenen Aufwand zu verringern und/ oder den mit der Programmierung eines Software-Emulators verbundenen Aufwand zu verringern oder zu vermeiden.It is therefore an object of the invention to avoid all or part of the problems of the prior art. In particular, the invention is intended to do this Contribute to increasing the reliability of troubleshooting in chip card programs and / or reducing the effort associated with troubleshooting and / or reducing or avoiding the effort associated with programming a software emulator.
Erfindungsgemäß wird diese Aufgabe ganz oder zum Teil gelöst durch Verfahren mit den Merkmalen von Anspruch 1 bzw. Anspruch 13, durch eine Chipkarte gemäß Anspruch 12 sowie durch ein Computerprogrammprodukt mit den Merkmalen von Anspruch 14. Die abhängigen Ansprüche betreffen bevorzugte Ausgestaltungen der Erfindung.According to the invention, this object is achieved in whole or in part by methods having the features of claim 1 or claim 13, by a chip card according to claim 12 and by a computer program product having the features of claim 14. The dependent claims relate to preferred embodiments of the invention.
Die Erfindung geht von der Grundüberlegung aus, zumindest während des Entwurfsprozesses die für eine komfortable Fehlersuche erforderlichen Daten in der Chipkarte selbst zu speichern und den Prozessor der Chipkarte ■ zum Zugriff auf diese Daten, zur Generierung einer für den Programmierer verständlichen Fehlersuch-Nachricht und zur Ausgabe dieser Nachricht als Ausgabe-Datensatz der Chipkarte einzusetzen.The invention is based on the basic idea of storing, at least during the design process, the data required for convenient troubleshooting in the chip card itself and the processor of the chip card ■ for accessing this data, for generating a fault-finding message understandable for the programmer and for output use this message as the output data record of the chip card.
Durch die erfindungsgemäße Lösung können mit geringem Aufwand Mel- düngen für die Fehlersuche erzeugt werden, die für den Software-Entwickler verständliche Verweise auf den Quelltext des gerade getesteten Programms enthalten. Dadurch wird es möglich, die Programmentwicklung direkt unter Verwendung der Chipkarten-Hardware durchzuführen. Spezielle Entwurfsumgebungen, die eine aufwendige Hardware oder eine softwaremäßige Emulation der Chipkarte verwenden, sind nicht mehr erforderlich. Es reicht vielmehr aus, die Chipkarte an ein zum Empfangen der Ausgabe-Nachricht eingerichtetes Terminal anzuschließen. Falls ein Fehler auftritt, kann die von der Chipkarte erzeugte Ausgabe-Nachricht vom Programmierer ohne die bisher erforderliche Zwischenschaltung eines Experten ausgewertet werden. Die Aufzählungsreihenfolge der Schritte in den Ansprüchen soll nicht einschränkend aufgefaßt werden. Es sind vielmehr Ausführungsformen der Erfindung vorgesehen, in denen diese Schritte in anderer Reihenfolge oder parallel oder semi-parallel oder ineinander verzahnt ausgeführt werden.With the solution according to the invention, messages for troubleshooting can be generated with little effort, which contain references to the source text of the program just tested that are understandable for the software developer. This makes it possible to carry out the program development directly using the chip card hardware. Special design environments that use complex hardware or software emulation of the chip card are no longer required. Rather, it is sufficient to connect the chip card to a terminal set up to receive the output message. If an error occurs, the output message generated by the chip card can be evaluated by the programmer without the previous intervention of an expert. The order of enumeration of the steps in the claims is not intended to be limiting. Rather, embodiments of the invention are provided in which these steps are carried out in a different order or in parallel or semi-parallel or interlocked.
In bevorzugten Ausgestaltungen der Erfindung ist, als Bestandteil der auf der Chipkarte gespeicherten Zuordnungsdaten, mindestens eine Übertragungstabelle mit einer Mehrzahl von Einträgen vorgesehen. Vorzugsweise ist jeder Eintrag einem Bereich des Prograrnrnzählerstands zugeordnet. In denjenigen Programmabschnitten, für die die Fehlersuche vorgenommen werden soll, ist bevorzugt für jeden Programmzählerstand mindestens ein Eintrag in der Übertragungstabelle vorgesehen.In preferred embodiments of the invention, at least one transmission table with a plurality of entries is provided as part of the assignment data stored on the chip card. Each entry is preferably assigned to a range of the program counter count. In those program sections for which the troubleshooting is to be carried out, at least one entry in the transmission table is preferably provided for each program counter reading.
Die Einträge in der Übertragungstabelle enthalten vorzugsweise je minde- stens eine Angabe, die sich auf den Quellcode des ausgeführten Programms bezieht. So kann beispielsweise die Nummer einer Quellcode-Zeile und/ oder der Namen eines Quellcode-Konstrukts und/ oder eine Referenz auf einen Namen eines Quellcode-Konstrukts in jedem Eintrag der Übertragungstabelle enthalten sein. Diese Angabe bezieht sich vorzugsweise auf denjenigen Bereich, insbesondere diejenige Zeile des Quellcodes, der dem Programmzählerstand entspricht, für den der Eintrag in der Übertragungstabelle vorgesehen ist. Unter einem "Quellcode-Konstrukt" sind in diesem Zusammenhang insbesondere, aber nicht abschließend, die Namen von Variablen, Konstanten, Funktionen, Prozeduren, Methoden und Modulen zu verstehen. Unter dem Begriff "Referenz" sollen hier insbesondere, aber nicht abschließend, Zeiger, Verweise, Kennungen (tags) oder Indexnummern verstanden werden.The entries in the transmission table preferably each contain at least one entry relating to the source code of the program being executed. For example, the number of a source code line and / or the name of a source code construct and / or a reference to a name of a source code construct can be contained in each entry of the transfer table. This information preferably relates to that area, in particular that line of the source code, which corresponds to the program counter reading for which the entry in the transfer table is intended. In this context, a “source code construct” is to be understood in particular, but not exclusively, to mean the names of variables, constants, functions, procedures, methods and modules. The term “reference” is to be understood here in particular, but not exclusively, as pointers, references, identifiers (tags) or index numbers.
In bevorzugten Ausführungsformen ist der Ausgabe-Datensatz eine Antwort- APDU (APDU = application protocol data unit) der Chipkarte. Es sind dann vorzugsweise keine besonderen Hardware-Einrichtungen für den Empfang des Ausgabe-Datensatzes erforderlich, sondern das übliche Terminal, an das die Chipkarte angeschlossen ist, reicht aus.In preferred embodiments, the output data record is a response APDU (APDU = application protocol data unit) of the chip card. Then there are preferably no special hardware devices for the Receipt of the output data record required, but the usual terminal to which the chip card is connected is sufficient.
Das bei der Fehlersuche ausgewertete Ereignis ist vorzugsweise das Auf tre- ten eines Fehlers oder einer Ausnahme (exception) oder einer Unterbrechung (interrupt). Diese Ereignisse können auf Hardware- oder auf Softwareebene ausgelöst werden. Wenn eine softwaremäßige Ausnahme, z.B. ein Zugriffsversuch außerhalb der Grenzen eines Speicherfeldes, auftritt, wird diese vorzugsweise zunächst von einem üblichen Ausnahmen-Bearbeitungsmodul (exception handler) bearbeitet, um Ausnahmen abzufangen (trapping), die möglicherweise im normalen Programmablauf vorgesehen sind. In bevorzugten Ausführungsformen führt das Auftreten einer Ausnahme also erst dann zum Ausführen des erfindungsgemäßen Verfahrens, wenn sichergestellt ist, daß die Ausnahme einen Fehler oder ein nicht vorgesehenes Problem anzeigt.The event evaluated in the troubleshooting is preferably the occurrence of an error or an exception or an interruption. These events can be triggered at the hardware or software level. If a software exception, e.g. If an access attempt occurs outside the boundaries of a memory field, this is preferably first processed by a customary exception handler in order to trap exceptions that may be provided in the normal program flow. In preferred embodiments, the occurrence of an exception only leads to the execution of the method according to the invention if it is ensured that the exception indicates an error or an unintended problem.
Erfindungsgemäß wird das Auftreten des vorbestimmten Ereignisses während der Programmausführung auf der Chipkarte überwacht. Der Begriff "Programm" ist hierbei im weitesten Sinne als Folge von Befehlen für den Chipkartenprozessor aufzufassen. Je nachdem, welche Schichten der Chipkartensoftware gerade entwickelt werden, werden durch bevorzugte Ausgestaltungen der Erfindung Fehlerereignisse abgefangen, die bei der Ausführung eines Anwendungsprogramms und/ oder einer Laufzeitumgebung, insbesondere einer virtuellen Maschine, und/ oder einer Betriebssystem- routine einschließlich hardwarenaher Treiber der Chipkarte auftreten.According to the invention, the occurrence of the predetermined event is monitored on the chip card during program execution. The term "program" is to be understood in the broadest sense as a sequence of commands for the chip card processor. Depending on which layers of the chip card software are currently being developed, preferred embodiments of the invention intercept error events that occur during the execution of an application program and / or a runtime environment, in particular a virtual machine, and / or an operating system routine including hardware-related drivers of the chip card ,
Der erfindungsgemäß ausgewertete Programmzähler ist in bevorzugten Ausführungsformen das Programmzählerregister des Prozessors oder ein virtueller Programmzähler einer Laufzeitumgebung, der durch ein weiteres Prozessorregister oder als mindestens ein Wort im Speicher der Chipkarte implementiert sein kann. Ein derartiger virtueller Programmzähler kann insbesondere Bestandteil einer virtuellen Maschine, z.B. einer Java™ Virtual Machine, sein.In preferred embodiments, the program counter evaluated according to the invention is the program counter register of the processor or a virtual program counter of a runtime environment, which can be implemented by a further processor register or as at least one word in the memory of the chip card. Such a virtual program counter can in particular be part of a virtual machine, for example a Java ™ virtual machine.
In bevorzugten Ausführungsformen der Erfindung ist vorgesehen, die erfin- dungsgemäße Funktionalität nur zum Zwecke der Fehlersuche während der Entwicklungsphase einzusetzen. Vorzugsweise läßt sich diese Funktionalität nach Abschluß der Programmentwicklung entfernen, um Sicherheitslücken zu vermeiden. Insbesondere kann vorgesehen sein, die zum Ausführen des Verfahrens erforderliche Fehlerbehandlungsroutine und/ oder die Zuord- nungsdaten in einem vorbereitenden Schritt als sogenannten Patch in dieIn preferred embodiments of the invention, it is provided that the functionality according to the invention is used only for the purpose of troubleshooting during the development phase. This functionality can preferably be removed after completion of the program development in order to avoid security gaps. In particular, it can be provided that the error handling routine required for executing the method and / or the assignment data are included in a preparatory step as a so-called patch
Chipkarte zu laden. Ein Verfahren und ein Computerprogrammprodukt, die derartige Fehlerbehandlungsroutinen und/ oder Zuordnungsdaten automatisch erzeugen und vorzugsweise in Form eines Patch bereitstellen, werden ebenfalls als in den Bereich der Erfindung fallend erachtet.To load the chip card. A method and a computer program product that automatically generate such error handling routines and / or mapping data and preferably provide them in the form of a patch are also considered to be within the scope of the invention.
Nach dem Einspielen des Patch ist die Fehlerbehandlungsroutine vorzugsweise über einen oder mehrere Ausspringpunkte - sowie entsprechenden Rückspringpunkten - an mindestens eine Prograrnmroutine der Chipkarte anbindbar. Diese Programmroutine kann insbesondere eine Lauf- zeitumgebung sein, in der Ausnahmen (exceptions) während des Ablaufs eines Anwenderprogramms bearbeitet werden. Die Chipkarte ist vorzugsweise mit und ohne den eingespielten Patch bis auf die Fehlerbehandlung in gleicher Weise funktionsfähig.After the patch has been imported, the error handling routine can preferably be connected to at least one program routine of the chip card via one or more exit points - and corresponding return points. This program routine can in particular be a runtime environment in which exceptions are processed while a user program is running. The chip card is preferably functional in the same way with and without the patch applied, except for error handling.
In bevorzugten Ausgestaltungen der erfindungsgemäßen Cliipkarte, des erfindungsgemäßen Verfahrens zum Bereitstellen der Fehlerbehandlungsroutine und/ oder der Zuordnungsdaten sowie des erfindungsgemäßen Computerprogrammprodukts weisen diese Merkmale auf, die den oben beschriebenen oder den in den abhängigen Verfahrensansprüchen definier- ten Merkmalen entsprechen. Weitere Merkmale, Eigenschaften und Vorteile der Erfindung ergeben sich aus der folgenden Beschreibung eines Ausführungsbeispiels und mehrerer Ausführungsalternativen. In den schematischen Zeichnungen zeigen:In preferred embodiments of the clip card according to the invention, the method according to the invention for providing the error handling routine and / or the assignment data and the computer program product according to the invention, these features have features that correspond to the features described above or defined in the dependent method claims. Further features, properties and advantages of the invention emerge from the following description of an exemplary embodiment and several alternative embodiments. The schematic drawings show:
Fig. 1 eine schematische Darstellung der Funktionsschichten einer Chipkarte und des Datenflusses gemäß einem Ausführungsbeispiel der Erfindung,1 is a schematic representation of the functional layers of a chip card and the data flow according to an embodiment of the invention,
Fig. 2 eine Darstellung der zur Speicherung der Zuordnungsdaten verwendeten Datenstrukturen in dem Ausführungsbeispiel von Fig. 1, undFIG. 2 shows the data structures used for storing the assignment data in the exemplary embodiment from FIG. 1, and
Fig. 3 ein Flußdiagramm des Verfahrensablaufs in dem Ausführungsbeispiel von Fig. 1.FIG. 3 shows a flow diagram of the method sequence in the exemplary embodiment from FIG. 1.
In Fig. 1 zeigt einen tragbaren Datenträger in der Gestalt einer Chipkarte 10, welche zu dem vorliegend beschriebenen Ausführungsbeispiel der1 shows a portable data carrier in the form of a chip card 10, which corresponds to the exemplary embodiment described here
Erfindung korrespondiert. Die Darstellung zeigt die Chipkarte 10 mit ihren aufeinander aufbauenden funktionalen Schichten, soweit die für die Erfindung relevante Funktionalität der Chipkarte 10 betroffen ist. Im hier beschriebenen Ausführungsbeispiel ist die Chipkarte 10 gemäß Version 2.1.1 des Java Cßrrf™-Standards der Firma Sun Microsystems, Inc., ausgestaltet. Eine Dokumentation über diesen Standard findet sich im Internet unter http://java.sun.com/products/javacard. In anderen Ausführungsformen der Erfindung sind andere Ausgestaltungen der Chipkarte 10 vorgesehen, die allgemein jede mit einem Mikroprozessor oder Mikrocontroller versehene Smart Card sein kann.Invention corresponds. The illustration shows the chip card 10 with its functional layers that build on one another, insofar as the functionality of the chip card 10 relevant to the invention is concerned. In the exemplary embodiment described here, the chip card 10 is designed in accordance with version 2.1.1 of the Java Cßrrf ™ standard from Sun Microsystems, Inc. Documentation about this standard can be found on the Internet at http://java.sun.com/products/javacard. In other embodiments of the invention, other configurations of the chip card 10 are provided, which can generally be any smart card provided with a microprocessor or microcontroller.
Eine Hardware-Schicht 12 weist einen Prozessor 14, einen Speicher 16 sowie andere nicht gezeigte Baugruppen auf, die in einem einzigen Halbleiterchip integriert sind. Der Speicher 16 ist in mehrere Bereiche, z.B. einen Programmspeicher, einen Pαfc/i-Speicher, einen Arbeitsspeicher o. dgl., unterteilt, die in geeigneten Technologien, z.B. als maskenprogrammiertes ROM, EEPROM, RAM, u.s.w. implementiert sind. Der Prozessor 14 weist mehrere Register auf, darunter einen Programmzähler 18. Die Elemente der Hardware-Schicht 12 sind, bis auf die noch im Detail zu beschreibende Programmierung des Speichers 16, an sich bekannt.A hardware layer 12 has a processor 14, a memory 16 and other modules, not shown, which are integrated in a single semiconductor chip. The memory 16 is divided into several areas, for example a program memory, a Pαfc / i memory, a working memory or the like, which are used in suitable technologies, for example as a mask-programmed ROM, EEPROM, RAM, etc. are implemented. The processor 14 has several registers, including a program counter 18. The elements of the hardware layer 12 are known per se, except for the programming of the memory 16, which will be described in detail below.
Auf die Hardware-Schicht 12 setzt ein hardwarenahes Betriebssystem 20 auf, das insbesondere Treiber für Baugruppen der Hardware-Schicht 12 sowie grundlegende Routinen für die Dateisystemverwaltung und Ein- und Ausgaberoutinen bereitstellt.A hardware-related operating system 20 is based on the hardware layer 12 and in particular provides drivers for modules of the hardware layer 12 as well as basic routines for file system administration and input and output routines.
Bei dem hier beschriebenen Beispiel einer Chipkarte 10 gemäß dem Java Cαrtt"rM-Standard setzt auf das hardwarenahe Betriebssystem 20 eine VM- Schicht 22 auf, die eine virtuelle Maschine 24 - hier mit "VM" abgekürzt bereitstellt. Die virtuelle Maschine 24 ist allgemein ein Programm, das auf der gegebenen Chipkartenhardware eine andere, in der Regel standardisierte Umgebung simuliert. Im vorliegenden Ausführungsbeispiel ist die virtuelle Maschine 24 eine Java™ Virtual Machine, wie sie in dem Dokument "Java Card™ 2.1.1 Virtual Machine Specification" , Revision 1.0 vom 18. Mai 2000 (verfügbar unter http://java.sun.com/products/javacard) beschrieben ist. In anderen Ausgestaltungen der Erfindung kann die virtuelle Maschine 24 andere Eigenschaften aufweisen oder ganz fehlen.In the example of a chip card 10 described here according to the Java Cαrtt "rM standard, a VM layer 22 is set up on the hardware-related operating system 20, which provides a virtual machine 24 - here abbreviated to" VM ". The virtual machine 24 is generally a Program which simulates a different, generally standardized environment on the given chip card hardware In the present exemplary embodiment, the virtual machine 24 is a Java ™ virtual machine, as described in the document “Java Card ™ 2.1.1 Virtual Machine Specification”, Revision 1.0 dated May 18, 2000 (available at http://java.sun.com/products/javacard). In other embodiments of the invention, virtual machine 24 may have other features or may be absent.
Die virtuelle Maschine 24 weist einen virtuellen Programmzähler 26 auf, der durch ein Register des Prozessors 14 oder mittels des Speichers 16 imple- mentiert ist. Ferner ist ein Ausnahmen-Bearbeitungsmodul 28 in der virtuellen Maschine 24 vorgesehen. Das Ausnahmen-Bearbeitungsmodul 28 enthält Programmroutinen, die beim Auftreten eines Ausnahme-Ereignisses (exception) auf erufen werden. Die damit zusammenhängenden Verfahrensschritte werden unten genauer beschrieben. In Fig. 1 ist ferner eine API-Schicht 30 (API = application program interface = Anwendungsprogrammschnittstelle) gezeigt, die teils auf das hardwarenahe Betriebssystem 20 und teils auf die VM-Schicht 22 abgestützt ist. Ein Anwendungsprogramm 32 ist in einer Anwendungsprogramm-Schicht 34 angeord- net. Das Anwendungsprogramm 32 nutzt die von der API-Schicht 30 bereitgestellten Schnittstellen, um gewünschte Funktion für den Benutzer der Chipkarte 10 zu implementieren. Im hier beschriebenen Ausführungsbeispiel entspricht die API-Schicht 30 der Spezifikation in dem Dokument "Java Card™ 2.2.1 Application Programming Interface", Revision 1.0 vom 18. Mai 2000 (verfügbar unter der oben angegebenen Adresse), und das Anwendungsprogramm 32 ist ein im Bytecode vorliegendes Java™-Cardlet (CAP). In Fig. 1 ist beispielhaft nur ein Anwendungsprogramm 32 dargestellt, es können aber, bei hinreichender Leistungsfähigkeit der Chipkarte 10, auch mehrere Anwendungsprogramme 32 in den Speicher 16 geladen sein und semi- parallel ausgeführt werden.The virtual machine 24 has a virtual program counter 26, which is implemented by a register of the processor 14 or by means of the memory 16. An exception processing module 28 is also provided in the virtual machine 24. The exception processing module 28 contains program routines that are called when an exception event occurs. The associated process steps are described in more detail below. 1 also shows an API layer 30 (API = application program interface), which is partly based on the hardware-related operating system 20 and partly on the VM layer 22. An application program 32 is arranged in an application program layer 34. The application program 32 uses the interfaces provided by the API layer 30 in order to implement the desired function for the user of the chip card 10. In the exemplary embodiment described here, the API layer 30 corresponds to the specification in the document "Java Card ™ 2.2.1 Application Programming Interface", revision 1.0 of May 18, 2000 (available at the address given above), and the application program 32 is an im Byte ™ present Java ™ cardlet (CAP). Only one application program 32 is shown by way of example in FIG. 1, but if the chip card 10 is sufficiently powerful, several application programs 32 can also be loaded into the memory 16 and executed in parallel.
Die Ein- und Ausgabe von Daten erfolgt über Eingabe- und Ausgabe-Datensätze 36, 38, die im vorliegenden Ausführungsbeispiel in an sich bekannter Art als Kommando- und Antwort- APDUs ausgestaltet sind (APDU = application protocol data unit).Data is input and output via input and output data records 36, 38, which in the present exemplary embodiment are designed in a manner known per se as command and response APDUs (APDU = application protocol data unit).
Die bisher beschriebenen Komponenten und Programmbestandteile der Chipkarte 10 sind an sich bekannt. Gegenstand des vorliegenden Ausführungsbeispiels der Erfindung ist die im folgenden eingehend beschriebene Funktionalität, die es erlaubt, eine zur Fehlersuche vorgesehene Nachricht als Ausgabe-Datensatz 38 der Chipkarte 10 zu generieren.The components and program components of the chip card 10 described so far are known per se. The present exemplary embodiment of the invention relates to the functionality described in detail below, which makes it possible to generate a message intended for troubleshooting as output data record 38 of the chip card 10.
Um diese Funktionalität zu verwirklichen, ist in der VM-Schicht 22 eine Fehlerbehandlungsroutine 40 vorgesehen. Die Fehlerbehandlungsroutine 40 ist als optionale Ergänzung - in Form eines Patchwes - an die virtuelle Maschine 24, genauer an deren Ausnahmen-Bearbeitungsmodul 28, angebunden. Dazu weist das Ausnahmen-Bearbeitungsmodul 28 einen Ausspringpunkt 42 auf, der zur Fehlerbehandlungsroutine 40 verzweigt. Nach dem Ende der Verarbeitung in der Fehlerbehandlungsroutine 40 erfolgt ein Rücksprung zu einem Rückspringpunkt 44 des Ausnahmen- Bearbeitungsmoduls 28. Während in Fig. 1 nur je ein Aus- und Rückspringpunkt 42, 44 gezeigt ist, sind in Ausführungsalternativen weitere solche Punkte im Ausnahmen-Bearbeitungsmodul 28 oder in anderen auf der Chipkarte 10 gespeicherten Program routinen, z.B. solchen des Betriebssystems 20 oder des Anwendungsprogramms 32, vorgesehen.To implement this functionality, an error handling routine 40 is provided in the VM layer 22. The error handling routine 40 is an optional addition - in the form of a patch - to the virtual machine 24, more precisely to its exception processing module 28, tethered. For this purpose, the exception processing module 28 has a exit point 42, which branches to the error handling routine 40. After the end of processing in the error handling routine 40, there is a return to a return point 44 of the exception processing module 28. While only one exit and return point 42, 44 is shown in FIG. 1, further such points are in the exception processing module in alternative embodiments 28 or in other program routines stored on the chip card 10, for example those of the operating system 20 or the application program 32.
Die Fehlerbehandlungsroutine 40 hat Zugriff auf Zuordnungsdaten 46. Im vorliegenden Ausführungsbeispiel wird das Verfahren bei der Suche von Fehlern im Anwendungsprogramm 32 eingesetzt. Die Zuordnungsdaten 46 enthalten daher Angaben, die sich auf den Quellcode des Anwendungspro- gramms 32 beziehen, und die Zuordnungsdaten 46 werden zusammen mit dem Anwendungsprogramm 32 in den Speicher 16 der Chipkarte 10 geladen. In der konzeptuellen Ansicht von Fig. 1 sind die Zuordnungsdaten 46 aus diesen Gründen in der Anwendungsprogramm-Schicht 34 gezeigt. In Ausführungsalternativen, bei denen die Fehlersuche in anderen Programm- routinen der Chipkarte 10 unterstützt werden soll, z.B. in der virtuellenThe error handling routine 40 has access to assignment data 46. In the present exemplary embodiment, the method is used when searching for errors in the application program 32. The assignment data 46 therefore contain information relating to the source code of the application program 32, and the assignment data 46 are loaded into the memory 16 of the chip card 10 together with the application program 32. For these reasons, the assignment data 46 is shown in the application program layer 34 in the conceptual view of FIG. 1. In alternative embodiments in which the troubleshooting in other program routines of the chip card 10 is to be supported, e.g. in the virtual
Maschine 24 oder im Betriebssystem 20, beziehen sich die Zuordnungsdaten 46 auf den Quellcode dieser Programmroutinen.Machine 24 or in the operating system 20, the assignment data 46 relate to the source code of these program routines.
Die zur Speicherung der Zuordnungsdaten 46 verwendeten Strukturen sind in Fig. 1 grob angedeutet und in Fig. 2 genauer gezeigt. Bei dem hier beschriebenen Ausführungsbeispiel sind eine Übertragungstabelle 48 und ein Konstantenpool 50 vorgesehen.The structures used for storing the assignment data 46 are roughly indicated in FIG. 1 and shown in more detail in FIG. 2. In the exemplary embodiment described here, a transmission table 48 and a constant pool 50 are provided.
Die Übertragungstabelle 48 enthält eine Mehrzahl von Einträgen, die in Fig. 2 als Zeilen dargestellt sind. Ein Eintrag ist beispielhaft mit dem Bezugszeichen 52 versehen. Jeder Eintrag 52 definiert denjenigen Bereich des virtuellen Programmzählers 26 (VPC) oder, in Ausführungsalternativen, des Programmzählers 18 (PC), für den der Eintrag 52 vorgesehen ist. Im vorliegenden Ausführungsbeispiel sind dazu in zwei Feldern 52A, 52B die Grenzen dieses Bereichs Start und Ende angegeben. Ferner weist jeder Eintrag 52 ein Feld 52C auf, das die Zeilennummer derjenigen Quellcode-Zeile enthält, die dem durch die Felder 52A, 52B definierten Bereich entspricht. Wenn also beispielsweise bei der Übersetzung von Zeile 123 des Quellcodes des Anwendungsprogramms 32 Byfecotiß-Befehle mit den Adressen 456 bis 466 erzeugt worden sind, würden die Felder 52A, 52B und 52C die Werte 456, 466 und 123 enthalten.The transfer table 48 contains a plurality of entries, which are shown as lines in FIG. 2. An entry is provided with the reference number 52 as an example. Each entry 52 defines that area of the virtual program counter 26 (VPC) or, in alternative embodiments, the program counter 18 (PC) for which the entry 52 is provided. In the present exemplary embodiment, the limits of this area start and end are specified in two fields 52A, 52B. Furthermore, each entry 52 has a field 52C which contains the line number of that source code line which corresponds to the area defined by the fields 52A, 52B. For example, if 32 byfecotiss instructions with addresses 456 to 466 were generated when line 123 of the source code of the application program was translated, fields 52A, 52B and 52C would contain the values 456, 466 and 123.
Ein weiteres Feld 52D jedes Eintrags 52 in der Übertragungstabelle 48 enthält einen Verweis auf einen Eintrag 54 im Konstantenpool 50. Der Konstantenpool 50 weist eine Mehrzahl von Einträgen auf; in Fig. 2 ist beispielhaft nur der Eintrag 54 mit einem Bezugszeichen versehen. Jeder Eintrag 54 im Konstantenpool 50 enthält in einem Textfeld 54A den Namen eines Konstrukts im Quellcode des der Fehlersuche unterzogenen Programms -hier des Anwendungsprogramms 32. Ein weiteres Feld 54B bezeichnet das Ende des Namens. In Ausführungsalternativen kann statt einer Endmarkierung in Feld 54B auch eine vor dem Textfeld 54A angeordnete Angabe der Länge des Textfeldes 54A verwendet werden.Another field 52D of each entry 52 in the transfer table 48 contains a reference to an entry 54 in the constant pool 50. The constant pool 50 has a plurality of entries; in FIG. 2 only the entry 54 is provided with a reference symbol as an example. Each entry 54 in the constant pool 50 contains, in a text field 54A, the name of a construct in the source code of the program being debugged — here the application program 32. Another field 54B denotes the end of the name. In alternative embodiments, instead of an end marking in field 54B, an indication of the length of text field 54A arranged in front of text field 54A can also be used.
In dem hier beschriebenen, einfachen Ausführungsbeispiel sind in den Textfeldern 54A des Konstantenpools 50 primär Namen von Methoden oder Funktionen oder Prozeduren oder Module aus dem Quellcode des Anwendungsprogramms 32 angegeben. Der Verweis in Feld 52D des Eintrags in der Übertragungstabelle 48 bezeichnet denjenigen Eintrag 54 im Konstantenpool 50, der den Namen der Methode oder Funktion oder Prozedur oder des Moduls aus dem Quellcode des Anwendungsprogramms 32 enthält, in der/ dem sich der im Eintrag 52 definierte Programmzählerbereich befindet. Diese Methode bzw. Funktion Prozedur oder Modul, enthält auch die im Eintrag 52 in Feld 52C angegebene Quellcodezeile.In the simple exemplary embodiment described here, names of methods or functions or procedures or modules from the source code of the application program 32 are primarily given in the text fields 54A of the constant pool 50. The reference in field 52D of the entry in the transfer table 48 designates that entry 54 in the constant pool 50 which contains the name of the method or function or procedure or the module from the source code of the application program 32 in which the program counter range defined in the entry 52 is located located. This method or function procedure or module also contains the source code line specified in entry 52 in field 52C.
In komplexeren Ausführungsformen der Erfindung sind im Konstantenpool 50 oder in anderen Strukturen der Zuordnungsdaten 46 oder in anderen Feldern des Speichers 16 weitere textuelle Angaben enthalten, die sich auf den Quellcode des ausgeführten Programms beziehen. Dies können z.B. symbolische Namen von Variablen oder Konstanten oder Parametern sein, oder auch Namen von Gliederungseinheiten des Programms. Ferner enthält der Speicher 16 vorzugsweise auch textuelle Beschreibungen der möglichen Ursachen für Fehler- oder Ausnahmeereignisse. Konzeptuell lassen sich diese Beschreibungen der Fehlerbehandlungsroutine 40 zuordnen, aber sie können auch im Konstantenpool 50 oder in anderen Datenstrukturen enthalten sein.In more complex embodiments of the invention, further textual information relating to the source code of the executed program is contained in the constant pool 50 or in other structures of the assignment data 46 or in other fields of the memory 16. This can e.g. be symbolic names of variables or constants or parameters, or names of structure units of the program. Furthermore, the memory 16 preferably also contains textual descriptions of the possible causes of error or exception events. Conceptually, these descriptions can be assigned to the error handling routine 40, but they can also be contained in the constant pool 50 or in other data structures.
Die in den Feldern 52D der Übertragungstabelle gespeicherten Verweise sind im vorliegenden Ausführungsbeispiel Zeiger (pointer), die auf den Beginn des entsprechenden Eintrags 54 im Konstantenpool 50 verweisen. In anderen Ausführungsbeispielen ist als Datenstruktur für den Konstanten- pool 50 eine TLV-Struktur (TLV = tag, length, value) vorgesehen, die für jeden Eintrag 54 eine Kennung (tag), eine Längenangabe (length) und den textuel- len Inhalt (value) enthält. Die Verweise in den Feldern 52D der Übertragungstabelle 48 sind dann keine Zeiger, sondern entsprechende Kennungen, die mit den jeweiligen Kennungen im Konstantenpool 50 übereinstimmen. In weiteren Ausführungsalternativen sind die Daten des Konstantenpools 50 unmittelbar in der Übertragungstabelle 48 gespeichert.In the present exemplary embodiment, the references stored in the fields 52D of the transmission table are pointers which point to the start of the corresponding entry 54 in the constant pool 50. In other exemplary embodiments, a TLV structure (TLV = tag, length, value) is provided as the data structure for the constant pool 50, which for each entry 54 contains an identifier (tag), a length specification (length) and the textual content ( value). The references in the fields 52D of the transfer table 48 are then not pointers, but rather corresponding identifiers which correspond to the respective identifiers in the constant pool 50. In further alternative embodiments, the data of the constant pool 50 are stored directly in the transmission table 48.
Zur Vorbereitung des erfindungsgemäßen Fehlersuchverfahrens wird im hier beschriebenen Ausführungsbeispiel zunächst der Quellcode des Anwen- dungsprogramms 32 übersetzt. Ferner werden - durch ein Zusatzprogramm, das in den Übersetzer integriert oder als externes Programm ausgestaltet sein kann - die Zuordnungsdaten 46, die Fehlerbehandlungsroutine 40 und die zum Installieren des Ausspringpunkts 42 erforderlichen Daten ermittelt und in Form eines Patch bereitgestellt. Dieser Patch wird dann in eine übliche Chipkarte 10 eingespielt. Das Anwendungsprogramm 32 kann bei dieser Gelegenheit oder vorher oder erst später in die Chipkarte 10 geladen werden. In Ausführungsalternativen werden die Zuordnungsdaten 46 stets zusammen mit dem Anwendungsprogramm 32 geladen, während die Fehlerbehandlungsroutine 40 zusammen mit der virtuellen Maschine 24 in die Chipkarte 10 eingespielt wird.To prepare the troubleshooting method according to the invention, the source code of the application program 32 is first translated in the exemplary embodiment described here. Furthermore - through an additional program that is integrated into the translator or designed as an external program may be - the mapping data 46, the error handling routine 40 and the data required to install the exit point 42 are determined and provided in the form of a patch. This patch is then loaded into a conventional chip card 10. The application program 32 can be loaded into the chip card 10 on this occasion or before or only later. In alternative embodiments, the assignment data 46 is always loaded together with the application program 32, while the error handling routine 40 is loaded into the chip card 10 together with the virtual machine 24.
Wenn während der Programmausfültrung durch den Prozessor 14 der Chipkarte 10 ein Ausnahmeereignis (exception) oder, in Ausführungsalternativen, eine Unterbrechung (interrupt) auftritt (Schritt 60 in Fig. 3), so führt dies zu einem Aufruf des Ausnahmen-Bearbeitungsmoduls 28. Dort wird zunächst überprüft, ob die Ausnahme auf einen Programmfehler zurückgeht oder im laufenden Programm aufgefangen werden soll (trapping). Im erstgenannten Fall erfolgt ein Sprung über den Ausspringpunkt 42 zur Fehlerbehandlungsroutine 40.If, during the execution of the program by the processor 14 of the chip card 10, an exception or, in alternative embodiments, an interrupt occurs (step 60 in FIG. 3), this leads to a call to the exception processing module 28 first of all checks whether the exception is due to a program error or should be caught in the running program (trapping). In the former case, a jump is made via the exit point 42 to the error handling routine 40.
Die Fehlerbehandlungsroutine 40 greift zunächst, Schritt 62 in Fig. 3, auf den virtuellen Programmzähler 26 zu, um dessen Zählerstand zu ermitteln. In Ausführungsalternativen erfolgt stattdessen ein Zugriff auf den Programmzähler 18, wie dies in Fig. 1 durch einen gestrichelten Pfeil angedeutet ist. Es wird dann, Schritt 64 in Fig. 3, nach demjenigen Eintrag 52 in der Übertragungstabelle 48 gesucht, der dem aktuellen Prograrnmzählerstand zugeordnet ist. Dazu kann entweder die Übertragungstabelle 48 der Reihe nach durchlaufen werden, oder es kann ein binäres Suchverfahren angewendet werden, wenn die Einträge in der Übertragungstabelle 48 z.B. nach aufsteigenden Werten in den Feldern 52A sortiert sind. Der aufgefundene Eintrag 52 in der Übertragungstabelle 48 enthält in Feld 52C die Zeile im Quellcode, bei deren Ausführung der Laufzeitfehler aufgetreten ist. Ferner wird über den in Feld 52D enthaltenen Verweis auf den Methodennamen in Feld 54A des Konstantenpool 50 zugegriffen, Schritt 66 in Fig. 3. Wenn der Konstantenpool 50 als TLV-Struktur implementiert ist, sind hierzu weitere Suchvorgänge erforderlich. Aus den beiden so ermittelten Angaben, die sich auf den Quellcode des ausgeführten Programms beziehen, wird in Schritt 68 die zur Fehlersuche vorgesehene Nachricht generiert. Im hier beschriebenen, besonders einfachen Ausführungsbeispiel kann diese Nachricht z.B. lauten:The error handling routine 40 first accesses the virtual program counter 26, step 62 in FIG. 3, in order to determine its counter reading. In alternative embodiments, the program counter 18 is accessed instead, as is indicated in FIG. 1 by a dashed arrow. Step 64 in FIG. 3 is then searched for that entry 52 in the transmission table 48 which is assigned to the current program counter reading. For this purpose, either the transfer table 48 can be run through in sequence, or a binary search method can be used if the entries in the transfer table 48 are sorted, for example, by increasing values in the fields 52A. The found entry 52 in the transmission table 48 contains in field 52C the line in the source code during the execution of which the runtime error occurred. Furthermore, the method name in field 54A of constant pool 50 is accessed via the reference contained in field 52D, step 66 in FIG. 3. If constant pool 50 is implemented as a TLV structure, further searches are required for this. In step 68, the message provided for troubleshooting is generated from the two items of information determined in this way, which relate to the source code of the program being executed. In the particularly simple exemplary embodiment described here, this message can be, for example:
Fehler 789 in Modul com.gd.java.gsm.compare, Zeile 123Error 789 in module com.gd.java.gsm.compare, line 123
Wie bereits beschrieben, wird vorzugsweise noch eine symbolische Beschrei- bung der Fehlerursache innerhalb der Chipkarte 10 erzeugt, so daß die Nachricht dann z.B. lauten würde:As already described, a symbolic description of the cause of the error is preferably generated within the chip card 10, so that the message is then e.g. would read:
Fehler ArraylndexOutOfBoundsException in Modul com.gd.java.gsm.compare, Zeile 123ArraylndexOutOfBoundsException error in module com.gd.java.gsm.compare, line 123
In noch komplexeren Ausgestaltungen, bei denen weitere symbolische Angaben in den Zuordnungsdaten 46 oder in anderen Bereichen des Speichers 16 enthalten sind, werden noch aussagekräftigere Nachrichten erzeugt, z.B.:In even more complex configurations, in which further symbolic information is contained in the assignment data 46 or in other areas of the memory 16, even more meaningful messages are generated, e.g .:
Fehler ArraylndexOutOfBoundsException in Modul com.gd.java.gsm.compare (B,S), Zeile 123, Index m_SearchFile außerhalb der zulässigen GrenzenArraylndexOutOfBoundsException error in module com.gd.java.gsm.compare (B, S), line 123, index m_SearchFile outside the permitted limits
Die in Schritt 68 generierte Nachricht wird in einem abschließenden Schritt 70 als Ausgabe-Datensatz 38, insbesondere in Form einer Antwort- APDU, von der Chipkarte 10 ausgegeben. Sie kann von einem üblichen Terminal empf angen werden und liefert dem Entwickler wertvolle Hinweise für die Programmentwicklung, ohne daß zusätzliche Hardware erforderlich wäre.The message generated in step 68 is output in a final step 70 as an output data record 38, in particular in the form of a response APDU, from the chip card 10. It can be from a usual terminal received and provides the developer with valuable information for program development without the need for additional hardware.
Nach dem Abschluß der Programmentwicklung und des Testvorgangs wird zumindest der Ausspringpunkt 42 wieder entfernt, um mögliche Sicherheitsrisiken auszuschließen. Vorzugsweise werden auch die Fehlerbehandlungsroutine 40 und die Zuordnungsdaten 46 entfernt - bzw. gar nicht erst in die Chipkarte 10 geladen -, damit das fertige Produkt möglichst viel freien Speicher 16 aufweist.After the completion of the program development and the test process, at least the exit point 42 is removed again in order to rule out possible safety risks. The error handling routine 40 and the assignment data 46 are preferably also removed - or not even loaded into the chip card 10 at all - so that the finished product has as much free memory 16 as possible.
Insgesamt vereinfacht die Erfindung den Testablauf, wodurch erhebliche Kosteneinsparungen möglich sind bzw. durch Ausweitung der Tests die Qualität des fertiggestellten Produkts erhöht werden kann. Overall, the invention simplifies the test sequence, as a result of which considerable cost savings are possible or the quality of the finished product can be increased by expanding the tests.

Claims

P a t e n t a n s p r ü c h e Patent claims
1. Verfahren zum Erzeugen einer zur Fehlersuche vorgesehenen Nachricht während der Ausführung eines Programms auf einem tragbaren Datenträger (10), wobei die Nachricht mindestens ein Element aufweist, das sich auf den Quellcode des ausgeführten Programms bezieht, und wobei das Verfahren die durch den Prozessor (14) des tragbaren Datenträgers (10) ausgeführten Schritte aufweist:1. A method for generating a message intended for troubleshooting during the execution of a program on a portable data carrier (10), the message having at least one element that relates to the source code of the executed program, and the method being carried out by the processor ( 14) of the portable data carrier (10):
Erkennen (60) eines vorbestimmten, zur Fehlersuche relevanten Ereignisses,Recognizing (60) a predetermined event relevant for troubleshooting,
Auslesen (62) eines Programmzählers (18, 26),Reading (62) a program counter (18, 26),
Zugreifen (64, 66) auf in einem Speicher (16) des tragbaren Datenträgers (10) enthaltene Zuordnungsdaten (46), um dem Programmzählerstand mindestens eine Angabe zuzuordnen, die sich auf den Quellcode des ausgeführten Programms bezieht,Accessing (64, 66) association data (46) contained in a memory (16) of the portable data carrier (10) in order to associate the program counter reading with at least one item of information relating to the source code of the executed program,
Generieren (68) der zur Fehlersuche vorgesehenen Nachricht unter Verwendung der mindestens einen Angabe, undGenerate (68) the message intended for troubleshooting using the at least one specification, and
Ausgeben (70) der zur Fehlersuche vorgesehenen Nachricht in einem Ausgabe-Datensatz (38) des tragbaren Datenträgers (10).Outputting (70) the message provided for troubleshooting in an output data record (38) of the portable data carrier (10).
2. Verfahren nach Anspruch 1, bei dem die Zuordnungsdaten (46) mindestens eine Übertragungstabelle (48) mit einer Mehrzahl von Einträgen (52) enthalten, wobei jeder Eintrag (52) einem Bereich des Programmzählerstands zugeordnet ist.2. The method according to claim 1, wherein the assignment data (46) contain at least one transfer table (48) with a plurality of entries (52), each entry (52) being assigned to a range of the program counter reading.
3. Verfahren nach Anspruch 2, bei dem zumindest einige der Einträge (52) in der Übertragungstabelle (48) jeweils eine Angabe einer Zeilennummer im Quellcode des ausgeführten Programms enthalten, wobei die angegebene Quellcode-Zeile dem Bereich des Prograrnmzählerstands entspricht, der dem Eintrag (52) in der Übertragungstabelle (48) zugeordnet ist. 3. The method according to claim 2, wherein at least some of the entries (52) in the transmission table (48) each contain an indication of a line number in the source code of the program being executed, the specified source code line corresponding to the range of the program counter reading that corresponds to the entry ( 52) is assigned in the transmission table (48).
4. Verfahren nach Anspruch 2 oder Anspruch 3, bei dem zumindest einige der Einträge (52) in der Übertragungstabelle (48) einen Namen oder eine Referenz auf einen Namen eines Konstrukts im Quellcode des ausgeführten Programms enthalten, das mit dem Teil des Quellcodes in Beziehung steht, der dem dem Eintrag (52) zugeordneten Bereich des Programmzählerstands entspricht.4. The method of claim 2 or claim 3, wherein at least some of the entries (52) in the transfer table (48) include a name or reference to a name of a construct in the source code of the executing program that is related to the portion of the source code that corresponds to the range of the program counter • assigned to the entry (52).
5. Verfahren nach einem der Ansprüche 1 bis 4, bei dem der Ausgabe-Datensatz (38) eine Antwort- APDU des tragbaren Datenträgers (10) ist.5. The method according to any one of claims 1 to 4, wherein the output data record (38) is a response APDU of the portable data carrier (10).
6. Verfahren nach einem der Ansprüche 1 bis 5, bei dem das vorbestimmte, zur Fehlersuche relevante Ereignis ein Fehler und/ oder eine Ausnahme und/ oder eine Unterbrechung bei der Programm- ausführung durch den Prozessor (14) des tragbaren Datenträgers (10) ist.6. The method according to any one of claims 1 to 5, wherein the predetermined event relevant for troubleshooting is an error and / or an exception and / or an interruption in the program execution by the processor (14) of the portable data carrier (10) ,
7. Verfahren nach einem der Ansprüche 1 bis 6, bei dem das vorbestimmte, zur Fehlersuche relevante Ereignis bei der Ausführung eines Anwendungsprogramms (32) und/ oder einer Laufzeit- Umgebung und/ oder einer Betriebssystemroutine des tragbaren Datenträgers (10) auftritt.7. The method according to any one of claims 1 to 6, wherein the predetermined event relevant to troubleshooting occurs when executing an application program (32) and / or a runtime environment and / or an operating system routine of the portable data carrier (10).
8. Verfahren nach einem der Ansprüche 1 bis 7, bei dem der Programmzähler (18, 26) ein Register des Prozessors (14) und/ oder ein virtueller Programmzähler (26) einer Laufzeitumgebung, insbesondere einer virtuellen Maschine (24), ist.8. The method according to any one of claims 1 to 7, wherein the program counter (18, 26) is a register of the processor (14) and / or a virtual program counter (26) of a runtime environment, in particular a virtual machine (24).
9. Verfahren nach einem der Ansprüche 1 bis 8, bei dem eine zum Ausführen des Verfahrens erforderliche Fehlerbehand- lungsroutine (40) über mindestens einen Ausspringpunkt (42) an eine Programmroutine des tragbaren Datenträgers (10) anbindbar ist. 9. The method as claimed in one of claims 1 to 8, in which an error handling routine (40) required for executing the method can be connected to a program routine of the portable data carrier (10) via at least one exit point (42).
10. Verfahren nach Anspruch 9, bei dem die Programmroutine, an die die Fehlerbehandlungsroutine (40) anbindbar ist, Teil einer auch ohne die Fehlerbehandlungsroutine (40) funktionsfähigen Laufzeitumgebung, insbesondere einer virtuellen Maschine (24), ist.10. The method of claim 9, wherein the program routine, to which the error handling routine (40) can be connected, is part of a runtime environment that can also function without the error handling routine (40), in particular a virtual machine (24).
11. Verfahren nach Anspruch 9 oder Anspruch 10, mit dem vorbereitenden Schritt, die Fehlerbehandlungsroutine (40) und die Zuordnungsdaten (46) in den Speicher (16) des tragbaren Datenträgers (10) zu laden.11. The method according to claim 9 or claim 10, with the preparatory step of loading the error handling routine (40) and the assignment data (46) into the memory (16) of the portable data carrier (10).
12. Tragbarer Datenträger (10) mit einem Prozessor (14) und mindestens einem Speicher (16), die zum Ausführen eines Verfahrens gemäß einem der Ansprüche 1 bis 11 eingerichtet ist.12. Portable data carrier (10) with a processor (14) and at least one memory (16), which is set up to carry out a method according to one of claims 1 to 11.
13. Verfahren zum Bereitstellen einer Fehlerbehandlungsroutine (40) und/ oder von Zuordnungsdaten (46), die in einen Speicher (16) eines tragbaren Datenträgers (10) ladbar sind, um dem tragbaren Datenträger (10) zu veranlassen, ein Verfahren nach einem der Ansprüche 9 bis 11 auszuführen.13. A method for providing an error handling routine (40) and / or association data (46) which can be loaded into a memory (16) of a portable data carrier (10) in order to cause the portable data carrier (10), a method according to one of the Execute claims 9 to 11.
14. Computerprogrammprodukt, das Befehle zur Steuerung eines Computers aufweist, um den Computer zur Ausführung eines Verfahrens nach Anspruch 13 zu veranlassen. 14. A computer program product having commands to control a computer to cause the computer to perform a method according to claim 13.
PCT/EP2002/010085 2001-09-17 2002-09-09 Method for producing an error detection message in a portable data medium WO2003025753A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP02772281A EP1436703A2 (en) 2001-09-17 2002-09-09 Method for producing an error detection message in a portable data medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE2001145783 DE10145783A1 (en) 2001-09-17 2001-09-17 Generate a troubleshooting message for a portable disk
DE10145783.9 2001-09-17

Publications (2)

Publication Number Publication Date
WO2003025753A2 true WO2003025753A2 (en) 2003-03-27
WO2003025753A3 WO2003025753A3 (en) 2004-01-08

Family

ID=7699316

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2002/010085 WO2003025753A2 (en) 2001-09-17 2002-09-09 Method for producing an error detection message in a portable data medium

Country Status (3)

Country Link
EP (1) EP1436703A2 (en)
DE (1) DE10145783A1 (en)
WO (1) WO2003025753A2 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10324384B3 (en) * 2003-05-28 2004-11-04 Giesecke & Devrient Gmbh Debugging method for installation of user program in portable data carrier e.g. smart card, using diagnosis program for detection of faults in installation routine
EP1739559A2 (en) 2005-06-20 2007-01-03 Giesecke & Devrient GmbH Processing of error events for a portable data carrier

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102004007614A1 (en) * 2004-02-17 2005-09-01 Giesecke & Devrient Gmbh Data carrier with sequence diagnostics memory

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2667419A1 (en) * 1990-10-02 1992-04-03 Gemplus Card Int Memory-card application-program debugging process and debugging system
US5371747A (en) * 1992-06-05 1994-12-06 Convex Computer Corporation Debugger program which includes correlation of computer program source code with optimized object code
US6085029A (en) * 1995-05-09 2000-07-04 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
DE19954810A1 (en) * 1999-11-13 2001-05-17 Bosch Gmbh Robert Generating and debugging machine program involves linker placing reference table in machine program that points to object data file with symbol information required for debugging

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446900A (en) * 1992-07-24 1995-08-29 Microtec Research, Inc. Method and apparatus for statement level debugging of a computer program
DE19930120A1 (en) * 1999-06-30 2001-01-11 Siemens Ag Multiprocessor-trace concept for system-on-semiconductor chip applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2667419A1 (en) * 1990-10-02 1992-04-03 Gemplus Card Int Memory-card application-program debugging process and debugging system
US5371747A (en) * 1992-06-05 1994-12-06 Convex Computer Corporation Debugger program which includes correlation of computer program source code with optimized object code
US6085029A (en) * 1995-05-09 2000-07-04 Parasoft Corporation Method using a computer for automatically instrumenting a computer program for dynamic debugging
DE19954810A1 (en) * 1999-11-13 2001-05-17 Bosch Gmbh Robert Generating and debugging machine program involves linker placing reference table in machine program that points to object data file with symbol information required for debugging

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"SMART TOOLS ILLUMINATE DEEPLY EMBEDDED SYSTEMS" EDN ELECTRICAL DESIGN NEWS, CAHNERS PUBLISHING CO. NEWTON, MASSACHUSETTS, US, Bd. 45, Nr. 3, 3. Februar 2000 (2000-02-03), Seiten 129-130,132,134,136,138, XP000933336 ISSN: 0012-7515 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10324384B3 (en) * 2003-05-28 2004-11-04 Giesecke & Devrient Gmbh Debugging method for installation of user program in portable data carrier e.g. smart card, using diagnosis program for detection of faults in installation routine
EP1492008A3 (en) * 2003-05-28 2009-09-16 Giesecke & Devrient GmbH Error event handling during installation of an application program in a portable data carrier
EP1739559A2 (en) 2005-06-20 2007-01-03 Giesecke & Devrient GmbH Processing of error events for a portable data carrier
EP1739559A3 (en) * 2005-06-20 2009-12-09 Giesecke & Devrient GmbH Processing of error events for a portable data carrier

Also Published As

Publication number Publication date
EP1436703A2 (en) 2004-07-14
DE10145783A1 (en) 2003-04-24
WO2003025753A3 (en) 2004-01-08

Similar Documents

Publication Publication Date Title
DE69720821T2 (en) Debugging system for programs with a graphical user interface
DE60031370T2 (en) TOKEN-BASED LINKAGE
DE60010420T2 (en) Automatic regression testing of workstation software
DE69533005T2 (en) Byte code program interpreter, method and arrangement with pretest of data type restrictions
DE69932371T2 (en) Movable instrumentation tags for testing and troubleshooting a computer program
DE69814174T2 (en) JAVA RUNTIME SYSTEM WITH CHANGED CONSTANT COLLECTION
DE102006007084B4 (en) A system for providing programs to a user-operable device
DE102009024605B4 (en) Apparatus and method for bypassing a first program code section with a replacement program code section
DE19960050A1 (en) Test code generation method for automatic testing procedure for computer system using visual representation for selection of test object and test object options
DE10225664A1 (en) System and method for checking polling events with polling wrappers
DE19536548A1 (en) Generation of software tools for initialisation and personalising of memory card, smart card
EP1611510B1 (en) Controlled execution of a program used for a virtual machine on a portable data carrier
DE102005037855A1 (en) System and method for storing user data in a partition file or for using a partition file containing user data
DE60002455T2 (en) METHOD AND DEVICE FOR AUTOMATIC SOFTWARE TESTING
DE102004057490B4 (en) Device and method for processing a program code
DE60224937T2 (en) METHOD AND ARRANGEMENT FOR ASSOCIATING APPROVED APPLET FILES
DE10038499A1 (en) Formal verifying method for development in data processor involves executing verification algorithm using one limit of signal envelope, and limiting state-space search by using verification algorithm
DE10357257A1 (en) Java smart card chip with memory area reserved for global variables
WO2003025753A2 (en) Method for producing an error detection message in a portable data medium
EP1709534B1 (en) The running of a program by a virtual machine
DE102005060714B4 (en) Data processing device, memory card, method of operating a data processing device and method of manufacturing a data processing device
DE10324384B3 (en) Debugging method for installation of user program in portable data carrier e.g. smart card, using diagnosis program for detection of faults in installation routine
DE19926467C1 (en) Computer system operating method has each individual program command of loaded computer program checked before program execution
DE60213786T2 (en) SYSTEM AND METHOD FOR THE AUTOMATIC DETECTION OF STATEMENTS IN A JAVA COMPATIBILITY TEST ENVIRONMENT
EP1732001B1 (en) Validation of a program on a data carrier intended for native execution by a processor

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GM HR HU ID IL IN IS JP KE KG KP KZ LC LK LR LS LT LU LV MA MD MK MN MW MX MZ NO NZ OM PH PT RO RU SD SE SG SI SK SL TJ TM TN TR TZ UA UG US UZ VC VN YU ZA ZM

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GH GM KE LS MW MZ SD SL SZ UG ZM ZW AM AZ BY KG KZ RU TJ TM AT BE BG CH CY CZ DK EE ES FI FR GB GR IE IT LU MC PT SE SK TR BF BJ CF CG CI GA GN GQ GW ML MR NE SN TD TG AE AG AL AM AT AZ BA BB BG BR BY BZ CA CH CN CO CR CZ DE DK DM DZ EC EE ES FI GB GD GE GM HR HU ID IL IN IS JP KE KG KP KR KZ LK LR LS LT LU LV MA MD MG MK MN MX MZ NO NZ OM PH PL PT RO RU SD SE SI SK SL TJ TM TN TR TT TZ UA UG UZ VC YU ZA ZM ZW GH GM KE LS MW MZ SL SZ TZ UG ZM ZW

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2002772281

Country of ref document: EP

REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

WWP Wipo information: published in national office

Ref document number: 2002772281

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP