DE102022104010A1 - Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle - Google Patents

Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle Download PDF

Info

Publication number
DE102022104010A1
DE102022104010A1 DE102022104010.0A DE102022104010A DE102022104010A1 DE 102022104010 A1 DE102022104010 A1 DE 102022104010A1 DE 102022104010 A DE102022104010 A DE 102022104010A DE 102022104010 A1 DE102022104010 A1 DE 102022104010A1
Authority
DE
Germany
Prior art keywords
symbol
application
program code
control unit
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102022104010.0A
Other languages
German (de)
Inventor
Jithin Reju
Matthias Priebe
Marc Deharde
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cariad SE
Original Assignee
Cariad SE
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 Cariad SE filed Critical Cariad SE
Priority to DE102022104010.0A priority Critical patent/DE102022104010A1/en
Publication of DE102022104010A1 publication Critical patent/DE102022104010A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software

Abstract

Die Erfindung betrifft ein Verfahren zum Überwachen eines Betriebszustands (32) einer Applikation, die in einem Steuergerät (12) eines Kraftfahrzeugs (11) betrieben wird, wobei ein symbolfreier Programmcode (13) der Applikation in dem Steuergerät (12) frei von einer Symboltabelle (22) bereitgestellt wird und falls in dem Steuergerät (12) ein Sammelmodul (27) ein vorbestimmtes Auslöseereignis detektiert, durch das Sammelmodul (27) rohe Speicherzustandsdaten (26), die Speicheradressen (35) aus dem symbolfreien Programmcode der Applikation beschreiben, ermittelt und an einen fahrzeugexternen Überwachungsserver (23) ausgesendet werden, und der Überwachungsserver (23) die rohen Speicherzustandsdaten (26) empfängt und mittels zumindest einer in dem Überwachungsserver (23) bereitgestellten Symboltabelle (22) in decodierte Speicherzustandsdaten (30), in welchen den Speicheradressen (35) ein jeweiliges Symbol (38) aus einem Quellcode (15) zugeordnet ist oder durch dieses ersetzt ist, umwandelt und mittels der decodierten Speicherzustandsdaten (30) zumindest eine vorbestimmte Analysemaßnahme (31) steuert.The invention relates to a method for monitoring an operating state (32) of an application that is operated in a control unit (12) of a motor vehicle (11), a symbol-free program code (13) of the application in the control unit (12) being free of a symbol table ( 22) is provided and if a collection module (27) detects a predetermined triggering event in the control unit (12), the collection module (27) determines raw memory state data (26) that describe memory addresses (35) from the symbol-free program code of the application and transmits them are sent out to a vehicle-external monitoring server (23), and the monitoring server (23) receives the raw memory state data (26) and, by means of at least one symbol table (22) provided in the monitoring server (23), converts it into decoded memory state data (30) in which the memory addresses (35 ) a respective symbol (38) from a source code (15) is assigned or replaced by this, converts and controls at least one predetermined analysis measure (31) by means of the decoded memory state data (30).

Description

Die Erfindung betrifft ein Verfahren und ein Überwachungssystem, mittels welchen der Betriebszustand zumindest einer Applikation (Anwendung) in zumindest einem Steuergerät eines oder mehrerer Kraftfahrzeuge überwacht werden kann. Der Programmcode solcher Applikationen in Steuergeräten muss sehr kompakt gehalten sein, um die geringen Speicherressourcen von Steuergeräten nicht unnötig auszulasten. Daher lassen sich im Programmcode von Applikationen in der Regel nur wenige oder gar keine sogenannte Debug-Informationen zum Analysieren von Laufzeitfehlern einer Applikation unterbringen.The invention relates to a method and a monitoring system by means of which the operating state of at least one application (application) can be monitored in at least one control unit of one or more motor vehicles. The program code of such applications in control units must be kept very compact in order not to unnecessarily overload the small memory resources of control units. For this reason, only little or no so-called debug information for analyzing runtime errors of an application can usually be accommodated in the program code of applications.

Ein Programmcode einer Applikation kann mit Symbolen (beispielsweise Zeichenfolgen) versehen werden, um beispielsweise Speicheradressen, an welche ein Programmpointer zum Ausführen einer Funktion springt, einem Funktionsnamen zuordnen zu können. Kommt es nach einem solchen Sprung zu einem Laufzeitfehler der Applikation, kann anhand des Symbols erkannt werden, wo im Quellcode der Fehler zu suchen ist. Dies vereinfacht die Fehlerbeseitigung. Auch ohne Laufzeitfehler kann es von Nutzen sein, zu überwachen, welche Funktionen in einer Applikation häufig aufgerufen werden und daher laufzeitkritisch sind. Um dies in einem kompilierten oder binären Programmcode erkennen zu können, sind ebenfalls die besagten Symbole notwendig, um Speicheradressen dahingehend lesen oder interpretieren zu können, zu welcher Funktion und Definition in einem Quellcode sie gehören.A program code of an application can be provided with symbols (for example character strings) in order to be able to assign a function name, for example, to memory addresses to which a program pointer jumps to execute a function. If a runtime error occurs in the application after such a jump, the symbol can be used to identify where the error is to be found in the source code. This simplifies troubleshooting. Even without runtime errors, it can be useful to monitor which functions in an application are called frequently and are therefore runtime-critical. In order to be able to recognize this in a compiled or binary program code, the said symbols are also necessary in order to be able to read or interpret memory addresses to which function and definition in a source code they belong.

Das Anreichern eines Programmcodes mit Symbolen vergrößert aber dessen Datenumfang oder sogenannten „Foot Print“ (Daten-Fußabdruck). Gerade in einem Steuergerät eines Kraftfahrzeugs ist aber verfügbarer Speicher eine kostspielige Ressource, die man nicht unnötig belasten oder belegen möchte.However, enriching a program code with symbols increases its data volume or so-called "footprint". In a motor vehicle control unit in particular, however, available memory is a costly resource that one does not want to unnecessarily burden or occupy.

Eine Laufzeitanalyse vorn Funktionen einer Applikation ist beispielsweise aus der US 9,104,805 B1 bekannt.A runtime analysis of the functions of an application is, for example, from the US 9,104,805 B1 known.

Die Nutzung von Symbolen zum Nachvollziehen eines Ablaufs eines binären Programmcodes anhand eines zugehörigen Quellcodes ist beispielsweise aus der US 10,521,331 B1 bekannt.The use of symbols to understand a sequence of binary program code using an associated source code is, for example, from US 10,521,331 B1 known.

Der Erfindung liegt die Aufgabe zugrunde, beim Überwachen eines Betriebszustands einer Applikation in einem Steuergerät eines Kraftfahrzeugs den hierzu notwendigen Speicherbedarf im Steuergerät gering zu halten.The invention is based on the object, when monitoring an operating state of an application in a control unit of a motor vehicle, to keep the memory requirement in the control unit low for this purpose.

Die Aufgabe wird durch die Gegenstände der unabhängigen Patentansprüche gelöst. Vorteilhafte Weiterentwicklungen oder Weiterbildungen der Erfindung sind durch die abhängigen Patentansprüche, die folgende Beschreibung sowie die Figuren beschrieben.The object is solved by the subject matter of the independent patent claims. Advantageous further developments or developments of the invention are described by the dependent patent claims, the following description and the figures.

Als eine Lösung umfasst die Erfindung ein Verfahren zum Überwachen eines Betriebszustands einer Applikation, die in einem Steuergerät eines Kraftfahrzeugs betrieben wird. Unter einer Applikation wird hier eine Anwendung oder Funktionalität verstanden, die durch das Steuergerät auf Grundlage einer Software oder eines Programmcodes bereitgestellt wird, der in dem Steuergerät als maschinenlesbarer Code oder Binärcode oder in Maschinensprache vorhanden ist. Bei dem Verfahren wird in dem Steuergerät die Applikation als „symbolfreier Programmcode“ bereitgestellt, das heißt als ein Programmcode, der frei von einer sogenannten Symboltabelle ist, in welcher in einem Programmcode eine Zuordnung von Speicheradressen zu einem jeweiligen Symbol aus einem Quellcode vorgenommen werden kann, um in der beschriebenen Weise zu einer Speicheradresse beispielsweise einen Funktionsnamen einer Programmfunktion oder Variablennamen einer Variablen zu speichern, die an der Speicheradresse beginnt oder deren Einsprungadresse durch die Speicheradresse gegeben ist. Insbesondere ist ein Programmcode ohne Debug-Symboltabelle gemeint.As a solution, the invention includes a method for monitoring an operating state of an application that is operated in a control unit of a motor vehicle. An application is understood here as an application or functionality that is provided by the control unit on the basis of software or program code that is present in the control unit as machine-readable code or binary code or in machine language. In the method, the application is provided in the control unit as "symbol-free program code", i.e. as a program code that is free of a so-called symbol table, in which memory addresses can be assigned to a respective symbol from a source code in a program code, in order to store, for example, a function name of a program function or variable name of a variable that begins at the memory address or whose entry address is given by the memory address in the manner described for a memory address. In particular, a program code without a debug symbol table is meant.

In dem Verfahren ist vorgesehen, dass in dem Steuergerät ein Sammelmodul betrieben wird, das beispielsweise als Programmcode oder Software oder Routine eines Betriebssystems des Steuergeräts realisiert sein kann. Falls in dem Steuergerät das Sammelmodul ein vorbestimmtes Auslöseereignis detektiert, werden durch das Sammelmodul rohe Speicherzustandsdaten ermittelt, die Speicheradresse aus dem Programmcode der Applikation enthalten. Es kann sich um Speicheradressen handeln, die auf aktuell ausgeführte oder aktive Codebestandteile des in Ausführung befindlichen Programmcodes verweisen, z.B. um aktuell aufgerufene Programmfunktionen. Eine Verknüpfung mit einem zugehörigen Bestandteil eines Quellcodes des Programmcodes fehlt aufgrund der fehlenden Symbole aus dem Quellcode (Symbolfreiheit). Die Speicherzustandsdaten werden hier als „roh“ bezeichnet, um sie von den im Weiteren noch beschriebenen „dekodierten“ Speicherzustandsdaten zu unterscheiden. Die rohen Speicherzustandsdaten sind insbesondere symbolfrei, weil sie aus dem symbolfreien Programmcode gebildet sind. Bei den Speicherzustandsdaten kann es sich insbesondere um einen sogenannten Stack-Trace handeln, insbesondere um einen Stack aus Sprungadressen für rekursive Funktionsaufrufe.The method provides for a collection module to be operated in the control unit, which can be implemented, for example, as program code or software or a routine of an operating system of the control unit. If the collection module detects a predetermined triggering event in the control device, the collection module determines raw memory status data that contains the memory address from the program code of the application. They can be memory addresses that refer to currently executed or active code components of the program code that is being executed, e.g. to program functions that are currently called. A link to an associated part of a source code of the program code is missing due to the missing symbols from the source code (free of symbols). The memory state data is referred to here as “raw” in order to distinguish it from the “decoded” memory state data described below. In particular, the raw memory state data is symbol-free because it is formed from the symbol-free program code. The memory status data can in particular be what is known as a stack trace, in particular a stack of jump addresses for recursive function calls.

Die rohen Speicherzustandsdaten werden durch das Sammelmodul an einen fahrzeugexternen Überwachungsserver ausgesendet. In der beschriebenen Weise sind die rohen Speicherzustandsdaten insbesondere nicht dahingehend lesbar oder dahingehend unlesbar, dass eine Zuordnung der Speicheradressen zu Funktionsnamen oder Variablenamen unmöglich ist, wie sie in einem Quellcode verwendet wurden, auf welchen der symbolfreie Programmcode beruht. Der Überwachungsserver kann beispielsweise als ein Cloud-Server oder Backend-Server des Kraftfahrzeugs realisiert sein. Der Überwachungsserver empfängt die rohen Speicherzustandsdaten.The raw memory state data is sent by the collection module to an off-board Monitoring server sent out. In the manner described, the raw memory state data is not readable or illegible to the extent that it is impossible to assign the memory addresses to function names or variable names as used in a source code on which the symbol-free program code is based. The monitoring server can be implemented, for example, as a cloud server or backend server of the motor vehicle. The monitoring server receives the raw storage state data.

Um die rohen Speicherzustandsdaten mit einem Quellecode der Applikation in Beziehung setzen zu können, ist in dem Überwachungsserver zumindest eine Symboltabelle bereitgestellt, mittels welcher im Überwachungsserver die empfangenen rohen Speicherzustandsdaten in die besagten decodierten Speicherzustandsdaten umwandelt werden. Die decodierten Speicherzustandsdaten unterscheiden sich von den rohen Speicherzustandsdaten dahingehend, dass sie zusätzlich oder alternativ die Symbole angeben, das heißt in den decodierten Speicherzustandsdaten ist den besagten Speicheradressen jeweils ein Symbol zugeordnet oder durch dieses ersetzt. Ein solches Symbol kann in der beschriebenen Weise beispielsweise eine Zeichenkette sein, die beispielsweise einen Funktionsnamen (z.B. „_main“) oder Variablennamen angeben kann. Insbesondere ist ein jeweiliges Symbol aus einem Quellcode der Applikation vorgesehen.In order to be able to relate the raw memory state data to a source code of the application, at least one symbol table is provided in the monitoring server, by means of which the received raw memory state data is converted into said decoded memory state data in the monitoring server. The decoded memory state data differ from the raw memory state data in that they additionally or alternatively indicate the symbols, ie in the decoded memory state data the said memory addresses are each assigned a symbol or replaced by one. Such a symbol can be a character string in the manner described, for example, which can specify a function name (e.g. "_main") or variable name. In particular, a respective symbol from a source code of the application is provided.

Obwohl also in dem Steuergerät ein symbolfreier Programmcode der Applikation betrieben wird, ist anschließend in dem Überwachungsserver dennoch mittels der decodierten Speicherzustandsdaten erkennbar oder beschrieben, welches Symbol zu der jeweiligen Speicheradresse aus den rohen Speicherzustandsdaten gehört. Mittels der decodierten Speicherzustandsdaten steuert dann der Überwachungsserver zumindest eine Analysemaßnahme.Although a symbol-free program code of the application is operated in the control unit, the decoded memory state data can then be used in the monitoring server to identify or describe which symbol belongs to the respective memory address from the raw memory state data. The monitoring server then controls at least one analysis measure using the decoded memory status data.

Durch die Erfindung wird also mittels des Überwachungsservers außerhalb des Kraftfahrzeugs ein Mapping-Algorithmus auf der Grundlage zumindest einer Symboltabelle bereitgestellt, um die Speicheradressen, die aus dem Steuergerät als rohe Speicherzustandsdaten empfangen wurden, auf ein jeweiliges Symbol abzubilden und damit die Speicherzustandsdaten „lesbar“ oder interpretierbar oder auf einen Quellcode der Applikation übertragbar zu machen.The invention therefore uses the monitoring server outside the motor vehicle to provide a mapping algorithm based on at least one symbol table in order to map the memory addresses received from the control unit as raw memory state data to a respective symbol and thus make the memory state data “readable” or interpretable or transferable to a source code of the application.

Durch die Erfindung ergibt sich der Vorteil, dass in einem Steuergerät ein Programmcode symbolfrei bereitgestellt oder betrieben werden kann und damit den beschriebenen geringen Fußabdruck in Bezug auf den Speicherbedarf aufweist, und dennoch außerhalb des Kraftfahrzeugs mittels des Überwachungsservers die decodierten Speicherzustandsdaten mit Angaben eines jeweiligen Symbols der Speicheradresse verfügbar gemacht werden können und damit die zumindest eine Analysemaßnahme gesteuert werden kann.The invention has the advantage that a program code can be provided or operated in a control unit without symbols and thus has the small footprint described in terms of memory requirements, and yet the decoded memory status data with information on a respective symbol of the Memory address can be made available and thus the at least one analysis measure can be controlled.

Zu der Erfindung gehören auch Weiterbildungen oder Weiterentwicklungen, durch die sich zusätzliche Vorteile ergeben.The invention also includes developments or further developments that result in additional advantages.

Da der symbolfreie Programmcode im Steuergerät einerseits und die Symboltabelle im Überwachungsserver andererseits zueinander korrespondieren oder passen müssen, sieht eine Weiterentwicklung vor, eine Asynchronität oder eine Fehlerquelle aufgrund von Versionsunterschieden zu vermeiden. Hierzu erzeugt ein Entwicklungssystem, das beispielsweise einen oder mehrere Computer in einem zum Beispiel Entwicklungslabor umfassen kann, aus einem Quellcode der Applikation mittels eines Compilers und/oder Linkers einen vollständigen Programmcode der Applikation. Mit „vollständiger Programmcode“ ist die an sich bekannte Version oder Ausgestaltung eines Programmcodes mit den besagten Symbolen gemeint. Der vollständige Programmcode ist somit Symbolen ausgestattet Insbesondere ist eine Programmcode mit Debug-Symboltabelle gemeint. Daraus wird mittels eines sogenannten Strip-Prozesses, wie er beispielsweise mittels der Software „strip“ bereitgestellt werden kann, den besagten symbolfreien Programmcode für das Steuergerät und überträgt diesen auch an das Steuergerät. Den vollständigen Programmcode übermittelt das Entwicklungssystem dagegen an den Überwachungsserver. Zusätzlich oder alternativ zum Übermitteln des vollständigen Programmcodes wird die zumindest eine aus dem vollständigen Programmcode ausgelesene Symboltabelle an den Überwachungsserver übermittelt. Damit hält das Entwicklungssystem den symbolfreien Programmcode im Steuergerät und die Symboltabelle im Überwachungsserver versionssynchron, das heißt beide sind auf denselben Quellcode zurückzuführen. Damit wird vermieden, dass eine veraltete oder falsche Symboltabelle zum Erzeugen der decodierten Speicherzustandsdaten verwendet wird. Der vollständige Programmcode ist in der besagten Weise größer oder umfasst eine größere Datenmenge als der symbolfreie Programmcode, weshalb der besagte Speicher-Fußabdruck des symbolfreien Programmcodes geringer ist und damit in vorteilhafter Weise weniger Speicherressourcen im Steuergerät benötigt oder in Anspruch nimmt.Since the symbol-free program code in the control unit on the one hand and the symbol table in the monitoring server on the other hand must correspond or match one another, a further development provides for avoiding asynchronism or a source of error due to version differences. To this end, a development system, which can include one or more computers in a development laboratory, for example, generates a complete program code for the application from a source code for the application using a compiler and/or linker. "Complete program code" means the known version or embodiment of a program code with the said symbols. The complete program code is thus equipped with symbols In particular, a program code with a debug symbol table is meant. Using a so-called strip process, such as that which can be provided using the “strip” software, for example, the said symbol-free program code for the control unit is derived from this and also transmits this to the control unit. The development system, on the other hand, transmits the complete program code to the monitoring server. In addition or as an alternative to the transmission of the complete program code, the at least one symbol table read from the complete program code is transmitted to the monitoring server. In this way, the development system keeps the symbol-free program code in the control unit and the symbol table in the monitoring server version-synchronous, i.e. both can be traced back to the same source code. This avoids using an outdated or incorrect symbol table to generate the decoded memory state data. The complete program code is larger in the aforesaid manner or includes a larger amount of data than the symbol-free program code, which is why the said memory footprint of the symbol-free program code is smaller and thus advantageously requires or uses fewer memory resources in the control unit.

Bei den Speicherzustandsdaten handelt es sich insbesondere um Laufzeitdaten, wie sie in einem volatilen Speicher oder RAM (Random Access Memory) des Steuergeräts während des Betriebs der Applikation vorhanden sein können. In den Speicherzustandsdaten werden gemäß einer Weiterbildung als Speicheradressen solche aus einem Speicherabbild und/oder eines Stack-Traces gesammelt. Ein „Stack-Trace“ gibt an, welche Programmfunktionen der Applikation aktuell mit welchen Parameterwerten aufgerufen worden waren, als die Speicheradressen ausgelesen wurden. Somit können der aktuelle Betriebszustand und die Werte von Variablen und Funktionsparametern anhand der Speicherzustandsdaten gelesen werden und hierbei mittels der decodierten Speicherzustandsdaten eine Zuordnung zu Elementen oder Abschnitten im Quellcode ermöglicht oder durchgeführt werden.The memory state data is, in particular, runtime data such as may be present in a volatile memory or RAM (Random Access Memory) of the control device during operation of the application. In the memory state data according to a Development as memory addresses such collected from a memory image and / or a stack trace. A "stack trace" indicates which program functions of the application were currently called with which parameter values when the memory addresses were read out. Thus, the current operating state and the values of variables and function parameters can be read using the memory state data and an assignment to elements or sections in the source code can be made possible or carried out using the decoded memory state data.

Besonders bevorzugt wird als Symboltabelle eine Debug-Symboltabelle mit Debug-Symbolen verwendet. Hierdurch kann eine Fehlersuche im Falle eines Laufzeitfehlers der Applikation unterstützt oder durchgeführt werden. Es kann eine Debug-Symboltabelle sein, wie sie aus einem vollständige Programmcode durch die Software „strip“ entfernt werden würde.A debug symbol table with debug symbols is particularly preferably used as the symbol table. This can be used to support or carry out troubleshooting in the event of a runtime error in the application. It can be a debug symbol table, such as would be removed from full program code by the "strip" software.

Entsprechend sieht eine Weiterentwicklung vor, dass das zumindest eine Auslöseereignis, auf das hin das Sammelmodul die rohen Speicherzustandsdaten ermittelt oder sammelt, entsprechend umfasst, dass das Sammelmodul ein Fehlersignal aus der Applikation empfängt. Somit kann die Applikation dem Sammelmodul signalisieren, dass ein Laufzeitfehler und/oder ein Fehler in Bezug auf Parameter oder Variablen vorliegen. Zusätzlich oder alternativ zu einem Fehlersignal aus der Applikation ist vorgesehen, dass das Auslösesignal ein Fehlersignal aus einem die Applikation ausführenden Betriebssystem empfängt. Ein solches Betriebssystem kann auch dann noch in vorteilhafter Weise ein Fehlersignal erzeugen, wenn die Applikation selbst „abgestürzt“ ist, also das Ausführen des symbolfreien Programmcodes aufgrund eines Fehlers angehalten oder unterbrochen wurde. Zusätzlich oder alternativ dazu kann als Auslöseereignis vorgesehen sein, dass das Sammelmodul ein Fehlersignal aus einer Watchdog-Funktion des Steuergeräts empfängt. Eine solche Watchdog-Funktion erwartet aus der Applikation zu vorbestimmten Zeitpunkten eine Nachricht oder ein Signal, welches ein Hinweis dafür ist, dass die Applikation noch bestimmungsgemäß läuft oder überhaupt läuft. Eine Watchdog-Funktion kann beispielsweise auch hardwarebasiert unabhängig von einem Betriebssystem des Steuergeräts ablaufen. Das Fehlersignal beschreibt in der bereits beschriebenen Weise einen fehlerhaften Betriebszustand der Applikation, beispielsweise eine Verletzung bei einem Speicherzugriff und/oder eine Auslastung einer CPU des Steuergeräts über einen vorbestimmten Grenzwert, was beispielsweise auf eine sogenannte Endlosschleife und damit auf einen Programmierfehler hindeuten kann. Ein fehlerhaften Betriebszustand kann z.B. sein, dass der symbolfreie Programcode auf eine nicht-zulässige Speicheradresse zuzugreifen versucht, z.B. mit einem sogenannten Null-Pointer.Accordingly, a further development provides that the at least one triggering event upon which the collection module determines or collects the raw memory state data accordingly includes the collection module receiving an error signal from the application. The application can thus signal to the collection module that there is a runtime error and/or an error in relation to parameters or variables. In addition or as an alternative to an error signal from the application, it is provided that the trigger signal receives an error signal from an operating system executing the application. Such an operating system can also advantageously generate an error signal when the application itself has “crashed”, ie the execution of the symbol-free program code has been stopped or interrupted due to an error. In addition or as an alternative to this, it can be provided as a triggering event that the collecting module receives an error signal from a watchdog function of the control device. Such a watchdog function expects a message or a signal from the application at predetermined times, which is an indication that the application is still running as intended or is running at all. A watchdog function can also run on a hardware basis, for example, independently of an operating system of the control unit. In the manner already described, the error signal describes an incorrect operating state of the application, for example a violation during a memory access and/or the utilization of a CPU of the control unit above a predetermined limit value, which can indicate, for example, a so-called endless loop and thus a programming error. An incorrect operating state can be, for example, that the symbol-free program code tries to access an invalid memory address, e.g. with a so-called null pointer.

Die rohen Speicherzustandsdaten müssen aber nicht ausschließlich bei Vorhandensein eines fehlerhaften Betriebszustands der Applikation generiert werden. Mittels der Speicherzustandsdaten können auch vorteilsbringende Informationen über einen normalen Betrieb der Applikation ermittelt oder beschrieben werden. Eine Weiterentwicklung sieht daher vor, dass das zumindest eine Auslöseereignis umfasst, dass ein Timer für einen zyklischen Zustandsbericht über die Applikation abläuft. Ein solcher Zustandsbericht wird auch als Health-Report bezeichnet. Somit kann von dem Überwachungsserver aus überprüft werden, welche Speicheradressen und damit welche Symbole und damit welche Abschnitte im Quellcode eine Applikation nutzt oder ausführt, wodurch dann beispielsweise ermittelt werden kann, welcher Abschnitt im Programmcode und damit im Quellcode in Bezug beispielsweise auf die Laufzeit und/oder Speicherbelegung optimiert werden sollte. Das Kraftfahrzeug kann hierbei in der beschriebenen Weise von außerhalb mittels des Überwachungsservers in Bezug auf seine Ressourcenbelegung durch den symbolfreien Programmcode analysiert oder überwacht werden.However, the raw memory state data does not have to be generated exclusively in the presence of a faulty operating state of the application. Advantageous information about normal operation of the application can also be determined or described by means of the memory status data. A further development therefore provides that the at least one triggering event includes that a timer for a cyclic status report on the application expires. Such a status report is also referred to as a health report. It is thus possible to check from the monitoring server which memory addresses and thus which symbols and thus which sections in the source code an application uses or executes, which can then be used to determine, for example, which section in the program code and thus in the source code in relation to the runtime and/or or memory usage should be optimized. In this case, the motor vehicle can be analyzed or monitored in the manner described from outside by means of the monitoring server with regard to its resource allocation by the symbol-free program code.

Entsprechend sieht eine mögliche Analysemaßnahme gemäß einer Weiterentwicklung vor, dass die decodierten Speicherzustandsdaten mit den darin enthaltenen Symbolen über ein Anzeigesystem ausgegeben werden. Somit kann ein Operateur oder Entwickler anhand dieser Analysemaßnahme einen Einblick in den inneren Zustand des Kraftfahrzeugs, insbesondere des Steuergeräts, erhalten. Eine andere Bezeichnung für eine solche Anzeige eines Anzeigesystems ist auch „Dashboard“.Accordingly, a possible analysis measure according to a further development provides that the decoded memory status data with the symbols contained therein are output via a display system. An operator or developer can thus use this analysis measure to obtain an insight into the internal state of the motor vehicle, in particular the control unit. Another name for such a display of a display system is "dashboard".

Eine Weiterentwicklung sieht vor, dass die Analysemaßnahme, die auf die decodierten Speicherzustandsdaten angewendet wird oder von diesen gesteuert wird, ein Filter umfasst, das in den decodierten Speicherzustandsdaten nach einem vorbestimmten Symbol sucht. Mit anderen Worten wird durch das Filter überprüft, ob in den aktuell erzeugten decodierten Speicherzustandsdaten ein vorbestimmtes Symbol vorkommen, also beispielsweise eine entsprechende Funktion und/oder ein entsprechendes Speicherelement in dem symbolfreien Programmcode auf dem Steuergerät aktiv war oder genutzt wurde oder darauf zugegriffen wurde. Bei Auffinden des gesuchten Symbols durch das Filter wird eine Nachricht an eine vorbestimmte Empfängeradresse gesendet. Somit wird der Empfänger an der Empfängeradresse automatisiert darüber informiert, dass in dem Steuergerät eine Speicheradresse benutzt oder aufgegriffen oder darauf zugegriffen wurde, zu der das vorbestimmte Symbol gehört. So kann beispielsweise der Aufruf einer bestimmten Funktion oder die Nutzung eines bestimmten Speicherinhalts einer Variablen, die mit dem Symbol bezeichnet ist, an die Empfängeradresse automatisiert gemeldet werden. Hierdurch kann beispielsweise ein Entwickler darüber informiert werden, dass eine bestimmte Funktion in dem Steuergerät aufgerufen oder genutzt wurde.A further development provides that the analysis measure, which is applied to the decoded memory state data or is controlled by it, comprises a filter which searches for a predetermined symbol in the decoded memory state data. In other words, the filter checks whether a predetermined symbol occurs in the currently generated decoded memory state data, i.e. for example a corresponding function and/or a corresponding memory element in the symbol-free program code on the control unit was active or was used or was accessed. If the filter finds the symbol being searched for, a message is sent to a predetermined recipient address. The recipient is thus automatically informed at the recipient address that a memory address to which the predetermined symbol belongs has been used or taken up or accessed in the control device. For example, the call of a specific function or the use of a specific memory content of a variable marked with the symbol can be automatically reported to the recipient address. In this way, for example, a developer can be informed that a specific function has been called up or used in the control device.

Die Erfindung muss sich nicht auf die Überwachung einer einzelnen Applikation beschränken. In dem Steuergerät können auch mehrere Applikationen überwacht werden. Um hierbei effizient und mit geringem Speicherbedarf aller überwachten Applikationen zu sammeln, sieht eine Weiterentwicklung vor, dass der jeweilige symbolfreie Programmcode mehrerer Applikationen in dem Steuergerät ausgeführt wird, aber nur ein Sammelmodul vorgesehen ist, welches die rohen Speicherzustandsdaten jeder dieser Applikationen ermittelt und an den Überwachungsserver aussendet. Es wird also der Dienst oder die Funktionalität des Einsammelns der rohen Speicherzustandsdaten aus mehreren Applikationen in einem einzelnen Sammelmodul in dem Steuergerät konzentriert.The invention does not have to be limited to the monitoring of a single application. Several applications can also be monitored in the control unit. In order to collect all monitored applications efficiently and with low memory requirements, a further development provides that the respective symbol-free program code of several applications is executed in the control unit, but only one collection module is provided, which determines the raw memory status data of each of these applications and transmits them to the monitoring server emits. The service or the functionality of collecting the raw memory status data from a number of applications is therefore concentrated in a single collecting module in the control unit.

Die Erfindung umfasst auch ein Überwachungssystem für zumindest eine Applikation in zumindest einem Steuergerät. Handelt es sich um mehrere Steuergeräte, können diese in einem Kraftfahrzeug oder auf mehrere Kraftfahrzeuge verteilt angeordnet sein. Mit anderen Worten kann das Überwachungssystem eines oder mehrere Kraftfahrzeuge in Bezug auf die Betriebszustände von Applikationen in den Steuergeräten von Kraftfahrzeugen überwachen. Hierzu ist der beschriebene Überwachungsserver in dem Überwachungssystem bereitgestellt sowie für das jeweilige Steuergerät ein jeweiliges Sammelmodul, um die in dem jeweiligen Steuergerät anfallenden rohen Speicherzustandsdaten zu sammeln und an den Überwachungsserver zu übermitteln. Entsprechend ist das erfindungsgemäße Überwachungssystem dazu eingerichtet, eine Ausführungsform des erfindungsgemäßen Verfahrens auszuführen. Hierzu können das Sammelmodul selbst und eine Steuersoftware oder ein Betriebsprogramm des Überwachungssystems entsprechende Programminstruktionen aufweisen, die bei Ausführen durch das Sammelmodul beziehungsweise den Überwachungsserver dazu veranlassen, gemeinsam die Verfahrensschritte gemäß der Ausführungsform des erfindungsgemäßen Verfahrens durchzuführen. Die Programminstruktionen können dazu in einem jeweiligen Datenspeicher des Steuergeräts (für das Sammelmodul) und des Überwachungsservers gespeichert sein. Der Überwachungsserver kann auf einem oder mehreren Mikroprozessoren beruhen, die mit dem Datenspeicher des Überwachungsservers gekoppelt sein können. Das Steuergerät kann ebenfalls einen oder mehrere Mikroprozessoren aufweisen, durch welche die zumindest eine Applikation (das heißt deren symbolfreier Programmcode) ausgeführt werden kann und durch welche zusätzlich das Sammelmodul betrieben werden kann oder ausgeführt werden kann.The invention also includes a monitoring system for at least one application in at least one control unit. If there are several control units, they can be arranged in one motor vehicle or distributed among several motor vehicles. In other words, the monitoring system can monitor one or more motor vehicles with regard to the operating states of applications in the control units of motor vehicles. For this purpose, the monitoring server described is provided in the monitoring system, as well as a respective collecting module for the respective control unit, in order to collect the raw memory status data occurring in the respective control unit and to transmit them to the monitoring server. Accordingly, the monitoring system according to the invention is set up to carry out an embodiment of the method according to the invention. For this purpose, the collection module itself and control software or an operating program of the monitoring system can have corresponding program instructions which, when executed by the collection module or the monitoring server, cause the method steps to be carried out together according to the embodiment of the method according to the invention. For this purpose, the program instructions can be stored in a respective data memory of the control device (for the collection module) and of the monitoring server. The monitoring server may be based on one or more microprocessors, which may be coupled to the data storage of the monitoring server. The control device can also have one or more microprocessors, by which the at least one application (ie its symbol-free program code) can be executed and by which the collection module can also be operated or executed.

Die Erfindung umfasst auch die Kombinationen der Merkmale der beschriebenen Ausführungsformen.The invention also includes the combinations of features of the described embodiments.

Im Folgenden werden Implementierungsbeispiele der Erfindung beschrieben. Hierzu zeigt:

  • 1 eine schematische Darstellung einer Ausführungsform des erfindungsgemäßen Überwachungssystems; und
  • 2 eine Skizze zur Veranschaulichung eines Mapping-Algorithmus, mittels welchem rohe Speicherzustandsdaten in decodierte Speicherzustandsdaten umgewandelt oder darauf abgebildet werden.
Implementation examples of the invention are described below. For this shows:
  • 1 a schematic representation of an embodiment of the monitoring system according to the invention; and
  • 2 a sketch to illustrate a mapping algorithm by means of which raw memory state data is converted into decoded memory state data or mapped onto it.

Bei den im Folgenden erläuterten Ausführungsbeispielen handelt es sich um bevorzugte Ausführungsbeispiele der Erfindung. Bei den Ausführungsbeispielen stellen die beschriebenen Komponenten jeweils einzelne, unabhängig voneinander zu betrachtende Merkmale der Erfindung dar, welche die Erfindung jeweils auch unabhängig voneinander weiterbilden und damit auch einzeln oder in einer anderen als der gezeigten Kombination als Bestandteil der Erfindung anzusehen sind. Des Weiteren sind die beschriebenen Ausführungsbeispiele auch durch weitere der bereits beschriebenen Merkmale der Erfindung ergänzbar.The exemplary embodiments explained below are preferred exemplary embodiments of the invention. In the exemplary embodiments, the described components each represent individual features of the invention to be considered independently of one another, which also develop the invention independently of one another and are therefore also to be regarded as part of the invention individually or in a combination other than that shown. Furthermore, the exemplary embodiments described can also be supplemented by further features of the invention already described.

In den Figuren sind funktionsgleiche Elemente jeweils mit denselben Bezugszeichen versehen.Elements with the same function are each provided with the same reference symbols in the figures.

1 zeigt ein Überwachungssystem 10, mittels welchem sich in zumindest einem Kraftfahrzeug 11 jeweils zumindest ein Steuergerät 12 des Kraftfahrzeugs 11 in Bezug auf seinen Betriebszustand überwachen lässt. Die 1 zeigt, dass auch mehrere Kraftfahrzeuge 11 überwacht werden können. In jedem Kraftfahrzeug 11 können auch mehrere Steuergeräte 12 in der im Folgenden beschriebenen Weise überwacht werden. Da die Erfindung auch auf ein einzelnes Kraftfahrzeug 11 und dort auf ein einzelnes Steuergerät 12 angewendet werden kann, wird im Folgenden lediglich dieser Fall ohne Beschränkung der Allgemeingültigkeit beschrieben. 1 shows a monitoring system 10, by means of which at least one control unit 12 of the motor vehicle 11 can be monitored in relation to its operating state in at least one motor vehicle 11. The 1 shows that several motor vehicles 11 can also be monitored. In each motor vehicle 11, multiple control units 12 can also be monitored in the manner described below. Since the invention can also be applied to a single motor vehicle 11 and there to a single control unit 12, only this case is described below without restricting the general validity.

Das Steuergerät 12 kann ein Embedded-System in dem Kraftfahrzeug 11 darstellen. In dem Steuergerät 12 kann auf einem Prozessorsystem oder SoC (System on Chip) eine jeweilige Applikation App1 bis App(n) betrieben oder ausgeführt werden, um in dem Kraftfahrzeug 11 zumindest eine Fahrzeugfunktion bereitzustellen. Beispielsweise kann durch eine Applikation ein Motor gesteuert werden und/oder ein Fensterheber und/oder eine Medienwiedergabe (beispielsweise Abspielen von MP3-Dateien), um nur Beispiele zu nennen. Damit in dem Steuergerät 12 die Applikationen wenig Datenspeicher in Anspruch nehmen, ist ihr jeweiliger Programmcode symbolfrei, das heißt jede der Applikationen ist in dem Steuergerät 12 durch einen symbolfreien Programmcode 13 implementiert, der keine Symboltabelle für Debug-Informationen aufweist, das heißt frei von einer solchen Symboltabelle ist. Dies kann in an sich bekannter Weise durch beispielsweise einen sogenannten Strip-Prozess oder ein Strip-Programm realisiert worden sein. Hierzu kann der symbolfreie Programmcode 13 beispielsweise in einem Labor oder bei einem Hersteller in einem Entwicklungssystem 14 durch Kompilieren eines jeweiligen Quellcodes 15 erzeugt worden sein. Zusätzlich oder alternativ zum Kompilieren kann auch ein Linken vorgesehen sein. Allgemein kann es sich also um einen Build-Agent 16 handeln, der zumindest einen Compiler 17 und/oder Linker 18 verwendet, um aus dem Quellcode 15 den jeweiligen symbolfreien Programmcode 13 zu erzeugen, der dann in dem Steuergerät 12 beispielsweise über eine Kommunikationsverbindung 19 installiert worden sein kann. Die Kommunikationsverbindung 19 kann beispielsweise beim Herstellen des Kraftfahrzeugs 11 und/oder beim Herstellen des Steuergeräts 12 kabelgebunden vorgesehen worden sein oder bei einer späteren Installation über eine Funkverbindung, die beispielsweise mittels Mobilfunk und/oder WLAN (Wireless Local Area Network) bereitgestellt worden sein kann. Durch den Build-Agent 16 kann die Debug-Symboltabelle, die zu dem jeweiligen symbolfreien Programmcode 13 gehört, mittels eines Extraktionsmoduls 21, also einer weiteren Software, extrahiert werden. Hierzu kann das vollständige Ergebnis des Kompilierens und/oder Linkens aus dem Compiler 17 und/oder Linker 18 als vollständiger Programmcode 20 dem Extraktionsmodul 21 bereitgestellt sein. Mit anderen Worten kann der vollständige Programmcode 20 den symbolfreien Programmcode 13 zuzüglich der Symboltabelle 22 umfassen. Die aus dem vollständigen Programmcode 20 extrahierte Symboltabelle 22 oder auch der vollständige Programmcode 20 selbst können an einen Überwachungsserver 23 übermittelt werden, der beispielsweise als eine Cloud 24 beispielsweise im Internet 25 betrieben werden kann. In dem Überwachungsserver 23 können somit die ausgelesene Symboltabelle 22 zur selben Version des vollständigen Programmcodes 20 bereitgestellt werden, zu dem auch der symbolfreie Programmcode 13 gehört oder aus welchem auch der symbolfreie Programmcode 13 erzeugt wurde.The control device 12 can represent an embedded system in the motor vehicle 11 . A respective application App1 to App(n) can be operated or executed in control unit 12 on a processor system or SoC (System on Chip). to provide at least one vehicle function in motor vehicle 11 . For example, an application can control a motor and/or a window opener and/or media playback (for example playing MP3 files), to name just a few. So that the applications take up little data memory in control unit 12, their respective program code is symbol-free, i.e. each of the applications is implemented in control unit 12 by a symbol-free program code 13 which has no symbol table for debug information, i.e. free of a such a symbol table is. This can be implemented in a manner known per se, for example by a so-called strip process or a strip program. For this purpose, the symbol-free program code 13 can have been generated, for example, in a laboratory or by a manufacturer in a development system 14 by compiling a respective source code 15 . Linking can also be provided in addition or as an alternative to compiling. In general, it can therefore be a build agent 16 that uses at least one compiler 17 and/or linker 18 to generate the respective symbol-free program code 13 from the source code 15, which then installs it in the control device 12, for example via a communication connection 19 may have been. The communication link 19 may have been provided in a wired manner when the motor vehicle 11 and/or when the control unit 12 was manufactured, for example, or via a radio link during a later installation, which may have been provided by means of mobile radio and/or WLAN (Wireless Local Area Network), for example. The debug symbol table, which belongs to the respective symbol-free program code 13, can be extracted by the build agent 16 by means of an extraction module 21, ie additional software. For this purpose, the complete result of the compiling and/or linking from the compiler 17 and/or linker 18 can be made available to the extraction module 21 as complete program code 20 . In other words, the complete program code 20 can include the symbol-free program code 13 plus the symbol table 22 . The symbol table 22 extracted from the complete program code 20 or also the complete program code 20 itself can be transmitted to a monitoring server 23 which can be operated as a cloud 24 for example on the Internet 25 . The symbol table 22 that has been read out can thus be made available in the monitoring server 23 for the same version of the complete program code 20 to which the symbol-free program code 13 also belongs or from which the symbol-free program code 13 was also generated.

In dem Steuergerät 12 kann während dessen Betrieb beispielsweise während einer Fahrt des Kraftfahrzeugs 11 aus den Applikationen App1...App(n) Speicherzustandsdaten 26 extrahiert werden, wie es beispielsweise mittels eines sogenannten Stack-Trace in an sich bekannter Weise möglich ist. Es kann auch ein Speicherabbild des jeweils laufenden oder angehaltenen symbolfreien Programmcodes 13 als Speicherzustandsdaten 26 ermittelt werden. Diese können durch ein Sammelmodul 27 ermittelt werden und über eine Kommunikationsverbindung 28 an den Überwachungsserver 23 übermittelt werden. Die Kommunikationsverbindung 28 kann beispielsweise eine Internetverbindung und/oder eine Funkverbindung (Mobilfunk und/oder WLAN als Beispiel) übermittelt werden. Ein Mapping-Algorithmus 29 des Überwachungsservers 23 kann die Speicherzustandsdaten 26 mittels der Symboltabellen 22 zu decodierten Speicherzustandsdaten 30 erweitern oder anreichern, indem Speicheradressen, die in den Speicherzustandsdaten 26 angegeben sind, ein zugehöriges Symbol aus der Symboltabelle 22 zugeordnet wird oder in die decodierten Speicherzustandsdaten 30 geschrieben wird. Somit ergibt sich in den decodierten Speicherzustandsdaten 30 ein Speicherabbild oder eine Beschreibung eines Betriebszustands des jeweiligen Programmcodes 13, der mittels der Symbole mit dem zugehörigen Quellcode 15 verglichen oder korreliert werden kann, sodass beispielsweise bekannt ist, welche Funktion aus dem Quellcode 15 aktuell in dem symbolfreien Programmcode 13 ausgeführt wurde, als die Speicherzustandsdaten 26 ermittelt wurden. Mittels der decodierten Speicherzustandsdaten 30 kann dann zumindest eine Analysemaßnahme 31 gesteuert werden, beispielsweise können einem Entwickler die decodierten Speicherzustandsdaten visualisiert werden, beispielsweise als Plot oder Graph. Es kann auch beispielsweise die Entwicklung des Quellcodes 15 verbessert werden, indem mittels der decodierten Speicherzustandsdaten 30 eine lesbare oder in Bezug auf den Quellcode 15 interpretierbare Darstellung des symbolfreien Programmcodes 13 bereitgestellt wird und somit der Betriebszustand des Kraftfahrzeugs 11, insbesondere seines Steuergeräts 12, in Bezug auf den Quellcode 15 interpretierbar gemacht wird.In the control unit 12, memory status data 26 can be extracted from the applications App1...App(n) during its operation, for example while the motor vehicle 11 is being driven, as is possible, for example, by means of a so-called stack trace in a manner known per se. A memory image of the currently running or stopped symbol-free program code 13 can also be determined as memory state data 26 . These can be determined by a collection module 27 and transmitted to the monitoring server 23 via a communication link 28 . The communication connection 28 can be transmitted, for example, an Internet connection and/or a radio connection (mobile radio and/or WLAN as an example). A mapping algorithm 29 of the monitoring server 23 can expand or enrich the memory state data 26 by means of the symbol tables 22 to form decoded memory state data 30 by memory addresses specified in the memory state data 26 being assigned an associated symbol from the symbol table 22 or in the decoded memory state data 30 is written. This results in a memory image or a description of an operating state of the respective program code 13 in the decoded memory state data 30, which can be compared or correlated with the associated source code 15 using the symbols, so that it is known, for example, which function from the source code 15 is currently in the symbol-free Program code 13 was executed when the memory state data 26 was determined. At least one analysis measure 31 can then be controlled by means of the decoded memory state data 30, for example the decoded memory state data can be visualized for a developer, for example as a plot or graph. The development of the source code 15 can also be improved, for example, by using the decoded memory state data 30 to provide a readable representation of the symbol-free program code 13 or one that can be interpreted in relation to the source code 15 and thus the operating state of the motor vehicle 11, in particular its control unit 12, in relation on the source code 15 is made interpretable.

2 veranschaulicht, wie mittels des Überwachungssystems 10 ein Bezug von einem Betriebszustand 32 einer Applikation im Steuergerät 12 in Bezug gesetzt werden kann zu dem Quellcode 15, aus welchem mittels des Compilers 17 und/oder Linkers 18 der symbolfreie Programmcode 13 der Applikation erzeugt wurde. 2 illustrates how the monitoring system 10 can be used to relate an operating state 32 of an application in the control unit 12 to the source code 15 from which the compiler 17 and/or linker 18 was used to generate the symbol-free program code 13 of the application.

In der beschriebenen Weise kann der Quellcode 15 beispielsweise Funktionen main, fct1, fct2 aufweisen, durch welche die jeweilige Fahrzeugfunktion implementiert sein kann. Nach dem Kompilieren und/oder Linken mittels des Build-Agent 16 kann sich der vollständige Programmcode 20 ergeben, welcher zum einen den Binärcode oder Maschinencode 33 aufweisen kann, bei welchem beispielsweise Assembler-Befehle 34 an vorbestimmten Speicheradressen 35 relativ zu einer Bezugsadresse in an sich bekannter Weise beschrieben sind. Zusätzlich kann für die Speicheradressen das jeweilige Symbol für die zugehörige Funktion als Debug-Information 36 in einer Symboltabelle 22 gespeichert sein.In the manner described, the source code 15 can have functions main, fct1, fct2, for example, through which the respective vehicle function can be implemented. After compiling and/or linking using the build agent 16 can result in the complete program code 20, which on the one hand can have the binary code or machine code 33 in which, for example, assembler instructions 34 are described at predetermined memory addresses 35 relative to a reference address in a manner known per se are. In addition, the respective symbol for the associated function can be stored as debug information 36 in a symbol table 22 for the memory addresses.

Durch das Entfernen der Symboltabelle 22 ergibt sich der symbolfreie Programmcode 13, der lediglich der Maschinenbefehle des Maschinencodes 33 mit der beibehaltenen Zuordnung oder Anordnung an den Speicheradressen 35 aufweist. Durch den Extraktor 21 kann die Symboltabelle 22 gerettet oder erhalten werden und in der beschriebenen Weise an den Überwachungsserver 23 (in 2 nicht dargestellt) übermittelt werden. Werden nun im Betrieb des Steuergeräts 12 die Speicherzustandsdaten 26 des ausgeführten symbolfreien Programmcodes 13 ermittelt, so ist hierdurch ein Abbild oder eine Momentaufnahme des Betriebszustands 32 in den Speicherzustandsdaten enthalten. Beispielsweise kann auch ein sogenannter Call-Stack 37 von Funktionsaufrufen in den Speicherzustandsdaten 26 enthalten sein. Werden diese dann mittels des Mapping-Algorithmus 29 in Bezug zu der Symboltabelle 22 gesetzt, so kann eine in den Speicherzustandsdaten angegebene Speicheradresse 35 um das jeweilige Symbol 38 der aufgerufenen Adresse oder Funktion ergänzt werden. Die so erzeugten decodierten Speicherzustandsdaten 30 können als Analysemaßnahme 31 beispielsweise eine Übersetzung des Call-Stacks 37 in einen symbolischen Call-Stack 39 aufweisen, der angibt, in welcher Reihenfolge die Funktionen aufgerufen wurden, bevor es zu einem Fehler ERROR kam. Somit kann lokalisiert werden, dass dieser Fehler in beispielsweise einer der Funktionen vorgekommen ist oder ausgelöst wurde.Removing the symbol table 22 results in the symbol-free program code 13 which only has the machine instructions of the machine code 33 with the assignment or arrangement at the memory addresses 35 being retained. The symbol table 22 can be saved or preserved by the extractor 21 and sent to the monitoring server 23 (in 2 not shown) are transmitted. If the memory status data 26 of the executed symbol-free program code 13 is now determined during operation of the control device 12, then an image or a snapshot of the operating status 32 is thereby contained in the memory status data. For example, what is known as a call stack 37 of function calls can also be contained in the memory state data 26 . If these are then related to the symbol table 22 by means of the mapping algorithm 29, a memory address 35 specified in the memory state data can be supplemented by the respective symbol 38 of the address or function called. As an analysis measure 31, the decoded memory status data 30 generated in this way can have, for example, a translation of the call stack 37 into a symbolic call stack 39, which indicates the order in which the functions were called before an ERROR error occurred. In this way, it can be localized that this error occurred or was triggered in one of the functions, for example.

Die Erfindung umfasst somit in eine besonders bevorzugten Ausführungsform drei Module, von denen sich eines in der Entwicklungsumgebung oder Build-Umgebung, eines in der Cloud und eines auf dem eingebetteten Gerät befindet. In einem normalen Produktionssystem werden die Artefakte (ausführbare Dateien, Bibliotheken usw.) von der Build-Umgebung erstellt. Um die Größe der Artefakte im Produktionssystem zu reduzieren, werden die Binärdateien von den Debug-Informationen befreit und auf der eingebetteten Hardware bereitgestellt. Diese werden als Release-Builds bezeichnet.In a particularly preferred embodiment, the invention thus comprises three modules, one of which is in the development environment or build environment, one in the cloud and one on the embedded device. In a normal production system, the artifacts (executables, libraries, etc.) are created by the build environment. To reduce the size of the artifacts in the production system, the binaries are stripped of the debug information and deployed to the embedded hardware. These are called release builds.

Die Aufzeichnung von Stack Traces auf dem Gerät liefert daher nur nicht interpretierbare Daten. Daher wird ein Modul im Build-Agenten benötigt, das die Debug-Informationen einer bestimmten Version der Anwendung generiert und in der Cloud speichert. Die in der Cloud gespeicherten Informationen enthalten eine Liste aller Debug-Symbole, den Anwendungsnamen und die Anwendungsversion.The recording of stack traces on the device therefore only provides uninterpretable data. Therefore, a module is needed in the build agent that generates the debug information of a specific version of the application and stores it in the cloud. The information stored in the cloud includes a list of all debug symbols, the application name and the application version.

Auf dem Embedded-Gerät zeichnet das stackTrace-Kollektormodul die Stack Traces aller auf dem Embedded-Gerät laufenden Anwendungen auf. In regelmäßigen Abständen werden die Stack Traces zusammen mit dem Anwendungsnamen und der Anwendungsversion an die Cloud gesendet.On the embedded device, the stackTrace collector module records the stack traces of all applications running on the embedded device. Periodically, the stack traces are sent to the cloud along with the application name and application version.

Der Mapping-Algorithmus in der Cloud verwendet den Anwendungsnamen und die Version, um die richtigen Debug-Informationen aus der Liste abzurufen, und dekodiert die Stack Traces in interpretierbare Daten. Diese Daten werden in einem Dashboard dargestellt, das z.B. Histogramme und/oder Flamegraphs und/oder Plots enthalten kann, die für detaillierte CPU-Analysen von Anwendungen verwendet werden können. Es kann von den Anwendungsentwicklern zur Optimierung/Überwachung der Leistung von Anwendungen verwendet werden.The mapping algorithm in the cloud uses the application name and version to get the correct debug information from the list and decodes the stack traces into interpretable data. This data is presented in a dashboard that can contain e.g. histograms and/or flamegraphs and/or plots that can be used for detailed CPU analysis of applications. It can be used by the application developers to optimize/monitor the performance of applications.

Durch die Beispiele ist gezeigt, wie ein Debugging eines Embedded-Device eines Kraftfahrzeugs von einem Überwachungsserver aus ermöglicht werden kann.The examples show how an embedded device of a motor vehicle can be debugged from a monitoring server.

BezugszeichenlisteReference List

1010
Überwachungssystemsurveillance system
1111
Kraftfahrzeugmotor vehicle
1212
Steuergerätcontrol unit
1313
symbolfreier Programmcodesymbol-free program code
1414
Entwicklungssystemdevelopment system
1515
QuellcodeSource code
1616
Build-Agentbuild agent
1717
Compilercompiler
1818
Linkerleftist
2020
vollständiger Programmcodecomplete program code
2121
Extraktionsmodulsextraction module
2222
Symboltabellesymbol table
2323
Überwachungsservermonitoring server
2424
Cloudcloud
2525
InternetInternet
2626
rohe Speicherzustandsdatenraw memory state data
2727
Sammelmodulcollection module
2828
Kommunikationsverbindungcommunication link
2929
Mapping-Algorithmusmapping algorithm
3030
decodierte Speicherzustandsdatendecoded memory state data
3131
Analysemaßnahmeanalysis measure
3232
Betriebszustandoperating condition
3333
Maschinencodemachine code
3434
Assembler-Befehleassembler commands
3535
Speicheradressememory address
3636
Debug-Informationdebug information
3737
Call-Stackcall stack
3838
Symbolsymbol
3939
symbolischer Call-Stacksymbolic call stack

ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDED IN DESCRIPTION

Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.This list of documents cited by the applicant was generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte PatentliteraturPatent Literature Cited

  • US 9104805 B1 [0004]US9104805B1 [0004]
  • US 10521331 B1 [0005]US10521331B1 [0005]

Claims (10)

Verfahren zum Überwachen eines Betriebszustands (32) einer Applikation, die in einem Steuergerät (12) eines Kraftfahrzeugs (11) betrieben wird, wobei ein symbolfreier Programmcode (13) der Applikation in dem Steuergerät (12) frei von einer Symboltabelle (22) bereitgestellt wird und falls in dem Steuergerät (12) ein Sammelmodul (27) ein vorbestimmtes Auslöseereignis detektiert, das Sammelmodul (27) rohe Speicherzustandsdaten (26), die Speicheradressen (35) aus dem symbolfreien Programmcode der Applikation beschreiben, ermittelt und an einen fahrzeugexternen Überwachungsserver (23) aussendet, und der Überwachungsserver (23) die rohen Speicherzustandsdaten (26) empfängt und mittels zumindest einer in dem Überwachungsserver (23) bereitgestellten Symboltabelle (22) in decodierte Speicherzustandsdaten (30), in welchen den Speicheradressen (35) ein jeweiliges Symbol (38), insbesondere ein Symbol (38) aus einem Quellcode (15) der Applikation, zugeordnet ist oder durch dieses ersetzt ist, umwandelt und mittels der decodierten Speicherzustandsdaten (30) zumindest eine vorbestimmte Analysemaßnahme (31) steuert.Method for monitoring an operating state (32) of an application that is operated in a control unit (12) of a motor vehicle (11), wherein a symbol-free program code (13) of the application in the control device (12) is provided free of a symbol table (22) and if a collection module (27) detects a predetermined triggering event in the control unit (12), the collection module (27) determines raw memory state data (26) describing the memory addresses (35) from the symbol-free program code of the application and sends it to a monitoring server (23) external to the vehicle sends out, and the monitoring server (23) receives the raw memory state data (26) and, by means of at least one symbol table (22) provided in the monitoring server (23), decodes it into memory state data (30), in which the memory addresses (35) contain a respective symbol (38), in particular a symbol (38) from a source code (15) of the application, assigned to it or replaced by it, converts it and uses the decoded memory status data (30) to control at least one predetermined analysis measure (31). Verfahren nach Anspruch 1, wobei ein Entwicklungssystem (14) aus dem Quellcode (15) der Applikation mittels eines Kompilers und/oder Linkers (18) einen vollständigen Programmcode der Applikation, der die Symboltabelle (22) oder die mehreren Symboltabellen (22) enthält, erzeugt und daraus mittels eines Strip-Prozesses den symbolfreien Programmcode erzeugt und diesen in das Steuergerät (12) überträgt und den vollständigen Programmcode und/oder die zumindest eine aus dem vollständigen Programmcode ausgelesene Symboltabelle (22) an den Überwachungsserver (23) übermittelt und damit den symbolfreien Programmcode im Steuergerät (12) und die zumindest eine Symboltabelle (22) im Überwachungsserver (23) versionssynchron hält.procedure after claim 1 , wherein a development system (14) from the source code (15) of the application by means of a compiler and / or linker (18) generates a complete program code of the application, which contains the symbol table (22) or the several symbol tables (22), and from this by means a strip process generates the symbol-free program code and transfers this to the control unit (12) and transmits the complete program code and/or the at least one symbol table (22) read from the complete program code to the monitoring server (23) and thus the symbol-free program code in the control unit (12) and keeps the at least one symbol table (22) in the monitoring server (23) in sync with the version. Verfahren nach einem der vorhergehenden Ansprüche, wobei in den Speicherzustandsdaten (26) als Speicheradressen (35) solche aus eines Speicherabbilds und/oder eines Stack-Traces gesammelt werden.Method according to one of the preceding claims, wherein those from a memory image and/or a stack trace are collected as memory addresses (35) in the memory status data (26). Verfahren nach einem der vorhergehenden Ansprüche, wobei die Symboltabelle (22) Debug-Symbole (38) enthält.A method as claimed in any preceding claim, wherein the symbol table (22) contains debug symbols (38). Verfahren nach einem der vorhergehenden Ansprüche, wobei das zumindest eine Auslöseereignis umfasst, dass das Sammelmodul (27) ein Fehlersignal aus der Applikation und/oder aus einem die Applikation ausführenden Betriebssystem und/oder einer Watchdog-Funktion des Steuergeräts (12) empfängt, wobei das Fehlersignal einen fehlerhaften Betriebszustand (32) der Applikation signalisiert.Method according to one of the preceding claims, wherein the at least one triggering event comprises the collection module (27) receiving an error signal from the application and/or from an operating system executing the application and/or a watchdog function of the control unit (12), the Error signal indicates a faulty operating state (32) of the application. Verfahren nach einem der vorhergehenden Ansprüche, wobei das zumindest eine Auslöseereignis umfasst, dass ein Timer für einen zyklischen Zustandsbericht, der über die Applikation bereitzustellen ist, abläuft.Method according to one of the preceding claims, wherein the at least one triggering event comprises that a timer for a cyclic status report to be provided via the application expires. Verfahren nach einem der vorhergehenden Ansprüche, wobei die zumindest eine Analysemaßnahme (31) umfasst, dass die decodierten Speicherzustandsdaten (30) über ein Anzeigesystem ausgegeben werden.Method according to one of the preceding claims, wherein the at least one analysis measure (31) comprises the decoded memory state data (30) being output via a display system. Verfahren nach einem der vorhergehenden Ansprüche, wobei die zumindest eine Analysemaßnahme (31) umfasst, dass ein Filter in den decodierten Speicherzustandsdaten (30) nach einem vorbestimmten Symbol (38) sucht und bei Auffinden des gesuchten Symbols (38) eine Nachricht an eine vorbestimmte Empfängeradressen sendet.Method according to one of the preceding claims, wherein the at least one analysis measure (31) comprises a filter searching for a predetermined symbol (38) in the decoded memory state data (30) and, when the symbol (38) sought is found, sending a message to a predetermined recipient address sends. Verfahren nach einem der vorhergehenden Ansprüche, wobei in dem Steuergerät (12) ein jeweiliger symbolfreier Programmcode (13) weiterer Applikationen ausgeführt wird und das Sammelmodul (27) rohe Speicherzustandsdaten (26) jeder der Applikationen ermittelt und an den Überwachungsserver (23) aussendet.Method according to one of the preceding claims, wherein a respective symbol-free program code (13) of further applications is executed in the control unit (12) and the collection module (27) determines raw memory status data (26) of each of the applications and transmits it to the monitoring server (23). Überwachungssystem (10) für zumindest eine Applikation in zumindest einem Steuergerät (12) zumindest eines Kraftfahrzeugs (11), aufweisend einen Überwachungsserver (23) und ein jeweiliges Sammelmodul (27) für das jeweilige Steuergerät (12), wobei das Überwachungssystem (10) dazu angepasst ist, ein Verfahren nach einem der vorhergehenden Ansprüche durchzuführen.Monitoring system (10) for at least one application in at least one control unit (12) of at least one motor vehicle (11), having a monitoring server (23) and a respective collection module (27) for the respective control unit (12), the monitoring system (10) being is adapted to carry out a method according to any one of the preceding claims.
DE102022104010.0A 2022-02-21 2022-02-21 Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle Pending DE102022104010A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102022104010.0A DE102022104010A1 (en) 2022-02-21 2022-02-21 Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102022104010.0A DE102022104010A1 (en) 2022-02-21 2022-02-21 Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle

Publications (1)

Publication Number Publication Date
DE102022104010A1 true DE102022104010A1 (en) 2023-08-24

Family

ID=87518948

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022104010.0A Pending DE102022104010A1 (en) 2022-02-21 2022-02-21 Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle

Country Status (1)

Country Link
DE (1) DE102022104010A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104805B1 (en) 2003-12-10 2015-08-11 The Mathworks, Inc. Method for using a graphical debugging tool
US10521331B1 (en) 2018-08-31 2019-12-31 The Mitre Corporation Systems and methods for declarative specification, detection, and evaluation of happened-before relationships

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9104805B1 (en) 2003-12-10 2015-08-11 The Mathworks, Inc. Method for using a graphical debugging tool
US10521331B1 (en) 2018-08-31 2019-12-31 The Mitre Corporation Systems and methods for declarative specification, detection, and evaluation of happened-before relationships

Similar Documents

Publication Publication Date Title
DE60130840T2 (en) Apparatus and method for cataloging symbolic data for use in performance analysis of computer programs
DE10050684B4 (en) Method and system for periodic tracing for call sequences between routines
DE102011008211A1 (en) Error prediction framework using time data mining
DE102006029138A9 (en) Method and computer program product for the detection of memory leaks
DE112012004247T5 (en) Passively monitoring virtual systems using extensible indexing
DE112011100168B4 (en) Capturing diagnostic data in a data processing environment
DE112014002877T5 (en) Passively monitor virtual machines using agent-independent, near real-time indexing
DE102022104010A1 (en) Method and monitoring system for monitoring an operating state of an application that is operated in a control unit of a motor vehicle
WO2002084491A2 (en) Method for determining and recording system information and function in distributed parallel component based software systems
DE102010009994A1 (en) Method for optimizing a control program for actuators
WO2005022382A2 (en) Method for the installation of a program component
DE102012210482A1 (en) Method and system for migrating business process instances
DE102022126423A1 (en) CLOUD-BASED PLATFORM SERVER FOR ANALYZING, REPORTING AND RESPONDING TO VEHICLE DTC DATA
DE102020213809A1 (en) Method for operating a control device when testing software in the control device and method for operating a test computer when testing software in a control device
EP3872661A1 (en) Analysis of a container instance of an operating system
DE102019202870A1 (en) Parallelization method, parallelization tool and multi-core microcomputer
DE102022002450A1 (en) Method for processing log files, data processing system and vehicle
DE102022111836A1 (en) Method and motor vehicle control device for operating a container virtualization with logging function and computer-readable storage medium
DE102011052511A1 (en) Method for processing data in an influencing device
DE102022122008A1 (en) Processor circuit for collecting logging records from multiple control circuits in a data pool, associated operating method for the processor circuit, system for collecting logging records, and computer-readable storage medium
DE102009038177A1 (en) Method for dynamically activating back trace of sub program in computer system, involves registering inflow in sub program through back trace module, and allowing program control flow to return back to sub program
EP4036739A1 (en) Fault susceptibility of a build pipeline
DE102022113112A1 (en) Method and system for collecting data for vehicles
DE102022115532A1 (en) COMPUTER-IMPLEMENTED METHOD, COMPUTER PROGRAM AND/OR COMPUTER-READABLE MEDIUM AND DATA PROCESSING DEVICE
DE102022206900A1 (en) Method for testing a computer program in several compositions of computer program modules

Legal Events

Date Code Title Description
R012 Request for examination validly filed