DE102008015060A1 - Static error analysis method for program, involves starting new iteration with call determined areas as source text areas, and aborting new iteration when no call areas in previous iterations are determined - Google Patents
Static error analysis method for program, involves starting new iteration with call determined areas as source text areas, and aborting new iteration when no call areas in previous iterations are determined Download PDFInfo
- Publication number
- DE102008015060A1 DE102008015060A1 DE102008015060A DE102008015060A DE102008015060A1 DE 102008015060 A1 DE102008015060 A1 DE 102008015060A1 DE 102008015060 A DE102008015060 A DE 102008015060A DE 102008015060 A DE102008015060 A DE 102008015060A DE 102008015060 A1 DE102008015060 A1 DE 102008015060A1
- Authority
- DE
- Germany
- Prior art keywords
- error
- program
- call
- determined
- source text
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Description
Die Erfindung betrifft ein Verfahren zur statischen Fehleranalyse in einem Programm, umfassend Programmanweisungen, bei dem ein Fehler detektiert, seine Zugehörigkeit zu einer Fehlerklasse bestimmt und seine Ursache ermittelt wird.The The invention relates to a method for static failure analysis in a program that includes program statements that have an error detects its membership in an error class and its cause is determined.
Bei Auftreten von Fehlern in imperativen oder objektorientierten Programmen muss analysiert werden, warum der Fehler, beispielsweise eine Verklemmung nebenläufiger Prozesse, aufgetreten ist. Der Grund für das Auftreten des Fehlers lässt sich nur durch eine Analyse der internen Abläufe erkennen. Diese Untersuchung ist also unabdingbar, um einen Fehler zu beheben. Ziel der Fehleranalyse ist es, die internen Programmabläufe zu verstehen. Häufig ist dabei die Fehlerstelle bekannt. Beispielsweise ist bekannt, dass eine Division durch Null passiert, oder ein Nullpointer dereferenziert wird oder das Programm verhält sich anders als erwartet. Weshalb dies passiert, muss mittels der Analyse ermittelt werden.at Occurrence of imperfections in imperative or object-oriented programs must be analyzed, why the error, for example, a deadlock concurrent processes, has occurred. The reason for the occurrence of the error can only be done by an analysis recognize the internal processes. So this investigation is indispensable to fix an error. Target of error analysis is to understand the internal program flows. Often if the fault is known. For example, it is known that a division passes through zero, or dereferences a null pointer or the program behaves differently than expected. Why this happens must be determined by analysis.
Nicht immer sind die Fehlerursache und die Fehlerstelle lokal (z. B. innerhalb einer Funktion oder einer Datei). So kann es durchaus sein, dass ein Dividend und eine Division an unterschiedlichen Stellen im Programm berechnet werden oder ein Zeiger wird an mehreren Stellen im Programm beschrieben, die fehlerhafte Verwendung ist an einer anderen. All diese Quelltextpositionen können die Fehlerursache enthalten und müssen demzufolge mit in eine Fehleranalyse einbezogen werden. Dies kann eine Fehleranalyse sehr aufwändig machen.Not always the cause of the error and the error location are local (eg within a function or a file). So it may well be that a dividend and a division in different places in the program be calculated or a pointer will appear in several places in the program described, the misuse is at another. Alles these source code locations may contain the cause of the error and must therefore be included in an error analysis become. This can make a fault analysis very expensive.
Aus
der
Es ist eine Aufgabe der Erfindung, ein neuartiges Verfahren zur statischen Fehleranalyse in einem Programm anzugeben.It It is an object of the invention to provide a novel method for static Specify error analysis in a program.
Die Aufgabe wird erfindungsgemäß gelöst durch ein Verfahren mit den Merkmalen des Anspruchs 1.The The object is achieved by a method having the features of claim 1.
Vorteilhafte Weiterbildungen sind Gegenstand der Unteransprüche.advantageous Further developments are the subject of the dependent claims.
Bei einem erfindungsgemäßen Verfahren zur statischen Fehleranalyse in einem Programm, das Programmanweisungen umfasst, wird ein Fehler detektiert, seine Zugehörigkeit zu einer Fehlerklasse bestimmt und seine Ursache ermittelt.at a method according to the invention for static Error analysis in a program that includes program instructions, If an error is detected, its membership in one Error class determines and determines its cause.
Unter einem Fehler wird insbesondere die Abweichung zwischen einer Spezifikation eines Programms und dessen Implementierung verstanden.Under In particular, the deviation between a specification becomes a mistake a program and its implementation.
Eine Fehleranalyse ist dann statisch, wenn zur Analyse eines Programms dessen Ausführung nicht erforderlich ist. Statische Analyse wird für Reverse Engineering, zur Fehleranalyse oder zur Fehlerdetektion eingesetzt.A Error analysis is then static when analyzing a program whose execution is not required. Static analysis is used for reverse engineering, for error analysis or for Error detection used.
Eine Klassifikation von Fehlern kann anhand folgender Fehlerklassen erfolgen:
- 1. eine notwendige Anweisung fehlt (z. B. wurde eine Initialisierung nicht durchgeführt);
- 2. eine Anweisung ist falsch, wobei das Programm durch Korrektur oder Löschung der falschen Anweisung korrigiert werden kann;
- 3. eine Bedingungslogik ist falsch, wodurch ein falscher Programmpfad ausgeführt oder ein Programmpfad nicht wie erwartet ausgeführt wird;
- 4. eine Anweisungsreihenfolge ist falsch (z. B. wird durch eine falsche Anweisungsreihenfolge eine Initialisierung zu spät ausgeführt).
- 1. a necessary instruction is missing (eg an initialization was not performed);
- 2. an instruction is wrong, whereby the program can be corrected by correcting or deleting the wrong instruction;
- 3. a conditional logic is incorrect, causing an incorrect program path to be executed or a program path not being executed as expected;
- 4. An instruction order is incorrect (eg, an incorrect instruction sequence causes initialization to be too late).
Die
Analyse für die Fehlerklassen
Bei der erfindungsgemäßen Fehleranalyse erfolgt mindestens eine Iteration folgender Schritte zur Erstellung eines anweisungsbezogenen Aufruf- und Kontrollflussgraphen:
- – Identifizierung von Quelltextstellen mit Programmanweisungen im Programmquelltext, die als Fehlerursache in Frage kommen. Beispielsweise sind bei einer Division durch Null die Fehlerstelle und alle Quelltextstellen relevant, an denen der Dividend berechnet wird. Diese Quelltextstellen müssen durch eine Suche eines entsprechenden Bezeichners gefunden werden. Die gefundenen Quelltextstellen sind Ausgangspunkte für das weitere Vorgehen.
- – Ermittlung mindestens eines Ausführungspfades für jede der Quelltextstellen in einer die Quelltextstelle umgebenden Funktion. Für jede der gefundenen Quelltextstellen muss analysiert werden, unter welchen Bedingungen diese innerhalb der umgebenden Funktion ausgeführt wird. Dies ist eine Analyse der Blockstruktur. Ergebnis dieser Analyse sind die Ausführungspfade innerhalb der umgebenden Funktion, die zur Quelltextstelle führen. Enthält die Funktion mindestens zwei solcher Quelltextstellen, so ist die Reihenfolge der Ausführung interessant.
- – Ermittlung von Aufrufstellen der umgebenden Funktion;
- – Beginn einer neuen Iteration mit ermittelten Aufrufstellen als Quelltextstellen oder Abbruch, falls keine in den vorherigen Iterationen unberücksichtigten Aufrufstellen ermittelt wurden. Das Verfahren ist beendet, wenn keine weitere bisher unberücksichtigte Aufrufstelle gefunden wird. Bei nicht rekursiven Programmen ist die Aufrufbeziehung zwischen Funktionen ein gerichteter Graph ohne Zyklen. Rekursive Programme können zyklische Aufrufbeziehungen enthalten.
- - Identification of source code locations with program statements in the program source text that can be considered as the cause of the error. For example, with a division by zero, the error location and all the source text locations are relevant where the Dividend is calculated. These source text locations must be found by searching for a corresponding identifier. The found source text points are starting points for the further procedure.
- Determining at least one execution path for each of the source text locations in a function surrounding the source text location. For each of the source code locations found, it must be analyzed under what conditions it is executed within the surrounding function. This is an analysis of the block structure. The result of this analysis is the execution paths within the surrounding function that lead to the source code location. If the function contains at least two such source text locations, the order of execution is interesting.
- - determination of call points of the surrounding function;
- - Beginning of a new iteration with determined call points as source text locations or abort, if no call points were ignored in the previous iterations. The procedure is ended if no further previously ignored call point is found. For non-recursive programs, the call relationship between functions is a directed graph with no cycles. Recursive programs can contain cyclic invocation relations.
Mit dem erfindungsgemäßen Verfahren werden alle Ausführungspfade zu relevanten Quelltextstellen inklusive dabei auszuwertender Bedingungen und die Reihenfolge der Ausführung ermittelt.With the method according to the invention are all execution paths to relevant source text including conditions to be evaluated and determines the order of execution.
Auf diese Weise wird eine besonders sichere Fehleranalyse erreicht, die insbesondere für imperative Programmiersprachen anwendbar ist. Das Verfahren ist auch für andere Problemstellungen des Reverse Engineering (Rekonstruktion) anwendbar. Zeitraubendes und fehlerträchtiges Sammeln von Informationen kann entfallen.On this way, a particularly secure error analysis is achieved, especially applicable for imperative programming languages is. The procedure is also for other problems Reverse engineering (reconstruction) applicable. Time-consuming and error-prone gathering of information can be omitted.
Eine mögliche Ausführungsform der Erfindung sieht vor, dass die Schritte der Iteration wie folgt ausgeführt werden:
- – Identifizierung von Quelltextstellen mit Programmanweisungen in einem Programmquelltext, die einen Fehler verursachen oder vermeiden können, wobei für die identifizierten Quelltextstellen eine Anfangshypothese derart angenommen wird, dass der Fehler an diesen identifizierten Quelltextstellen nicht auftritt;
- – Ermittlung mindestens eines oder aller Ausführungspfade für jede der identifizierten Quelltextstellen;
- – Ermittlung von allen internen Aufrufstellen und/oder Anweisungen, welche von der Anfangshypothese abhängig sind, in dem oder in allen Ausführungspfaden;
- – Erzeugung eines booleschen Ausdrucks anhand von mindestens einer Bedingung, einer Verknüpfung, einem Wert einer Variablen und/oder einem Wertebereich einer Variablen aller von der Anfangshypothese abhängigen und ermittelten internen Aufrufstellen und/oder Anweisungen als mindestens eine Ausführungshypothese;
- – Prüfen des booleschen Ausdrucks aller ermittelten internen Aufrufstellen und/oder Anweisungen auf Richtigkeit der betreffenden Bedingung, Verknüpfung, des Wertes einer Variablen und/oder des Wertebereichs einer Variablen unter Annahme mindestens einer oder mehrerer der Ausführungshypothesen;
- – Beweisen der Anfangshypothese, indem die internen Aufrufstellen und/oder Anweisungen des erzeugten booleschen Aus drucks anhand einer oder mehrerer der Ausführungshypothesen solange geprüft werden, bis alle diejenigen Aufrufstellen und/oder Anweisungen identifiziert sind, die nur von Programmeingängen abhängig sind, oder bis kein Widerspruch identifizier wird, und Prüfen der Abhängigkeit der Programmeingänge anhand der Ausführungshypothese/n derart, dass die Anfangshypothese bewiesen ist, wenn bei Ausführung der Aufrufstellen und/oder Anweisungen die Programmeingänge nicht zu dem erwarteten Fehler führen;
- – Abbruch, falls die oder alle Anfangs- und/oder Ausführungshypothesen bestätigt werden oder
- – anderenfalls identifizieren des den erwarteten Fehler verursachenden Programmeingangs und gegebenenfalls Beginn einer neuen Iteration mit ermittelten und/oder neu zu ermittelnden Aufrufstellen und/oder Anweisungen als weitere Quelltextstellen zur Identifizierung weiterer Programmeingänge, die zu dem erwarteten Fehler führen können.
- - Identification of source code locations with program statements in a program source text that can cause or avoid an error, whereby an initial hypothesis is assumed for the identified source code locations such that the error does not occur at these identified source code locations;
- Determining at least one or all of the execution paths for each of the identified source code locations;
- Determination of all internal call points and / or instructions which are dependent on the initial hypothesis, in the or in all execution paths;
- - generating a Boolean expression based on at least one condition, a link, a value of a variable and / or a range of values of a variable of all dependent on the initial hypothesis and determined internal call points and / or instructions as at least one execution hypothesis;
- Checking the Boolean expression of all determined internal call points and / or instructions for the correctness of the condition concerned, linking, the value of a variable and / or the value range of a variable assuming at least one or more of the execution hypotheses;
- Prove the initial hypothesis by examining the internal call points and / or statements of the generated Boolean expression against one or more of the execution hypotheses until all those call points and / or instructions are identified that depend only on program inputs, or until no inconsistency and checking the dependency of the program inputs on the execution hypothesis (s) such that the initial hypothesis is proven when the program inputs do not result in the expected error upon execution of the call locations and / or instructions;
- - Termination, if the or all initial and / or execution hypotheses are confirmed or
- Otherwise identifying the program input causing the expected error and, if appropriate, starting a new iteration with determined call points and / or new call points and / or instructions as further source code points for identifying further program inputs which can lead to the expected error.
Mit anderen Worten: Das Verfahren ermöglicht neben dem Identifizieren von Fehlern durch Programmeingänge in das Programm und/oder in Unterprogramme und/oder in Programmbausteinen auch interne Fehler im Programm, im Unterprogramm und/oder im Programmbaustein selbst, wie beispielsweise Verknüpfungen, Bedingungen und/oder Wertezuweisungen zu Variablen.With In other words, the method allows besides identifying of errors through program inputs in the program and / or in internal programs and / or in program blocks also internal errors in the program, in the subroutine and / or in the program block itself, such as links, conditions, and / or Value assignments to variables.
Hierzu wird bei der statischen Fehleranalyse zweckmäßigerweise jeweils mindestens ein boolescher Wert einer Bedingung, mindestens ein boolescher Wert einer Verknüpfung, mindestens ein Wert einer beteiligten Variable und/oder mindestens ein Wertebereich einer beteiligten Variablen in mindestens einem der oder in allen Ausführungspfade/n ermittelt und anhand einer der angenommenen Hypothesen auf Richtigkeit überprüft.For this is expediently in the static error analysis at least one Boolean value of a condition, at least a Boolean value of a link, at least one value of a link involved variable and / or at least one value range of a variables involved in at least one or all of the execution paths determined and checked for correctness on the basis of one of the assumed hypotheses.
Es können weitere Analysen folgen. Beispielsweise kann untersucht werden, unter welchen Umständen die relevanten Bedingungen welchen booleschen Wert annehmen oder welchen Wert beteiligte Variablen haben können.It may be followed by further analysis. For example, it can be examined under which Circumstances the relevant conditions may take which Boolean value or which value involved variables may have.
Das Verfahren kann durch den Einsatz mindestens eines statischen Analysewerkzeugs unterstützt werden. Die Qualität des Ergebnisses der Fehleranalyse hängt stark von der verwendeten Suchtechnik (einfache Textsuche, Suche nach regulären Ausdrücken etc.) und dem gesuchten Bezeichner ab. Möglicherweise ist das Ergebnis der Suche unvollständig oder fehlerhaft. Wird beispielsweise nach einer globalen Variable gesucht, werden wahrscheinlich auch lokale Variablen gleichen Namens gefunden oder es müssen weitere Suchschritte folgen, da der Bezeichner auch synonym verwendet wurde. Das Suchergebnis muss also interpretiert werden. Die Analyse der Reihenfolge und die Bestimmung der relevanten Funktionen erfordert ein Verstehen der Blockstruktur der umgebenden Funktion. Diese Blockstruktur kann sehr komplex sein, so dass ein Erkennen der relevanten Bedingungen und der Ausführungsreihenfolge erschwert wird. Die Anzahl der für die Fehlerursache relevanten Daten ist beträchtlich und die Daten sind im Quelltext verteilt. Das beschriebene Verfahren ist zur Vermeidung der Verarbeitung und Interpretation großer Datenmenge in einem Analysewerkzeug als ein Softwareprogramm implementiert. Ohne Werkzeugunterstützung ist der Anwender auf zusätzliche Notizen und manuell erstellte grafische Darstellungen angewiesen. Beispielsweise statische Analysewerkzeuge bieten ausgefeilte Techniken und Darstellungen, welche das Suchen nach Bezeichnern und die Analyse der Blockstruktur einer Funktion erleichtern. Kombiniert man diese Techniken und das erfindungsgemäße Verfahren, ergeben sich deutliche Erleichterungen bei der Fehleranalyse.The Procedure may be through the use of at least one static analysis tool get supported. The quality of the result The error analysis depends heavily on the search technique used (simple text search, search for regular expressions etc.) and the desired identifier. Maybe it is the result of the search incomplete or incorrect. Becomes For example, looking for a global variable will likely also found or need local variables with the same name Further search steps follow, since the identifier also uses synonymously has been. The search result must therefore be interpreted. The analysis the order and the determination of the relevant functions requires an understanding of the block structure of the surrounding function. This block structure can be very complex, allowing a recognition of the relevant conditions and the execution order is made more difficult. The number the data relevant to the cause of the error is significant and the data is distributed in the source text. The method described is great for avoiding processing and interpretation Amount of data implemented in an analysis tool as a software program. Without tool support, the user is on additional Mentioned notes and manually created graphical representations. For example, static analysis tools offer sophisticated techniques and representations looking for identifiers and analysis facilitate the block structure of a function. Combine this Techniques and the method according to the invention, There are significant simplifications in error analysis.
Beispielsweise können solche statischen Analysewerkzeuge zur Fehlerdetektion eingesetzt werden. Sie können insbesondere eine maximale Ausführungszeit eines Programms bei gegebener Hardware oder eine abstrakte Interpretation des Programms durchführen.For example can such static analysis tools for error detection be used. In particular, you can have a maximum execution time a program with given hardware or an abstract interpretation of the program.
Weitere statische Analysewerkzeuge können eine interprozedurale Datenflussanalyse durchführen. Dabei werden beispielsweise Fehler bei der Ressourcenverwaltung, Divisionen durch 0 und Ähnliches erkannt.Further static analysis tools can be an inter-procedural Perform data flow analysis. In this case, for example Resource management errors, divide by 0 and so on recognized.
Ebenso können statische Analysewerkzeuge als Rekonstruktionswerkzeuge (im Folgenden Reverse-Engineering-Werkzeuge genannt) ausgebildet sein.As well can use static analysis tools as reconstruction tools (referred to below as reverse engineering tools).
Reverse Engineering bezeichnet den Vorgang, aus einem bestehenden System durch die Untersuchung der Strukturen und der Abläufe wieder verwendbare Konstruktionselemente zu extrahieren. Aufgrund der abstrakteren Darstellung des Quelltextes lassen sich solche Werkzeuge für die Fehleranalyse einsetzen, auch wenn dies nicht ihr primäres Aufgabengebiet ist.Reverse Engineering refers to the process from an existing system reusable by examining structures and processes Extract construction elements. Because of the more abstract Presentation of the source code can be such tools for use the error analysis, even if this is not their primary area of responsibility is.
Für die Fehleranalyse bieten Reverse-Engineering-Werkzeuge Unterstützung bei der Suche nach den Quelltextstellen. Sie stellen Aufrufgraphen und Darstellungen der Blockstruktur von Funktionen zur Verfügung. Diese Informationen sind hilfreich für die Analyse einer Fehlerursache, für sich genommen ohne das erfindungsgemäße Verfahren zur statischen Fehleranalyse jedoch unzureichend.For the error analysis provide reverse engineering tools support in the search for the source text locations. They provide call graphs and Representations of the block structure of functions available. This information is helpful for the analysis of a Cause of error, taken alone without the invention Procedure for static failure analysis but insufficient.
Im Folgenden werden Ausführungsbeispiele der Erfindung anhand von Zeichnungen näher erläutert.in the Below, embodiments of the invention are based on explained in more detail by drawings.
Dabei zeigen:there demonstrate:
In
Ausgangspunkt
für das Verfahren ist eine Quelltextstelle
Eine Fehleranalyse wird folgendermaßen durchgeführt:
- – Identifizierung von Quelltextstellen
2 mit Programmanweisungen in einem Programmquelltext, die als Fehlerursache in Frage kommen, - – Ermittlung mindestens eines Ausführungspfades
für jede der Quelltextstellen
2 in einer die Quelltextstelle2 umgebenden Funktion; - – Ermittlung von Aufrufstellen der umgebenden Funktion;
- – Beginn einer neuen Iteration mit ermittelten Aufrufstellen
als Quelltextstellen
2 oder Abbruch, falls keine in den vorherigen Iterationen unberücksichtigten Aufrufstellen ermittelt wurden.
- - Identification of source text locations
2 with program statements in a program source text which can be considered as the cause of the error - Determination of at least one execution path for each of the source text locations
2 in one the source text location2 surrounding function; - - determination of call points of the surrounding function;
- - Start of a new iteration with identified call points as source text locations
2 or Cancel, if no call points not considered in the previous iterations were found.
Zur
Menge der relevanten Informationen gelangt man durch folgende rekursive
Definition: Relevante Informationen bezogen auf die Ausführung
einer oder mehrerer Quelltextstellen
- 1. die Quelltextstellen
2 selbst - 2. vorzeitige Aussprungpunkte im Sinne eines Kontrollflusses (return, break, continue)
- 3. alle Bedingungen innerhalb der die Quelltextstellen
2 umgebenden Funktion, die relevant für die Ausführung der relevanten Quelltextstellen2 sind - 4. die umgebende Funktion
- 5. Aufrufstellen der umgebenden Funktion sind ebenfalls relevant
und müssen analog zu 1–3 wie relevante Quelltextstellen
2 behandelt werden - 6. Enthält ein Block mehrere relevante Quelltextstellen
2 , ist deren Ausführungsreihenfolge ebenfalls relevant.
- 1. the source text locations
2 even - 2. premature exit points in the sense of a control flow (return, break, continue)
- 3. all conditions within the source text locations
2 surrounding function that is relevant to the execution of the relevant source code locations2 are - 4. the surrounding function
- 5. Calling points of the surrounding function are also relevant and must be analogous to 1-3 as relevant source text locations
2 be treated - 6. Does a block contain several relevant source text locations
2 , whose execution order is also relevant.
Das
Programm in
Die
Quelltextstelle
Die
Fehleranalyse führt zu einer stark vereinfachten Darstellung
eines anweisungsbezogenen Aufruf- und Kontrollflussgraphen
In
In
Die
Aufrufstellen der Funktion g in main und j müssen bei diesem
Beispiel mit untersucht werden, da die Bedingungen des Aufrufs relevant
für die Ausführung der Anweisung an der Quelltextstelle
Das
Ergebnis der Fehleranalyse für dieses Beispiel ist: Die
Anweisung an der Quelltextstelle
Der
Ausführungspfad
Der
anweisungsbezogene Aufruf- und Kontrollflussgraph
Am
Beispiel der Division gemäß der Quelltextstelle
In
einem ersten Schritt werden im Quelltext
Hierzu
werden der oder die Ausführungspfade
Darüber
hinaus werden alle internen Anweisungen "dividend = 1" weiterer
Quelltextstellen
Diese
Anweisung "dividend = 1" kann verhindern, dass die Division in Zeile
Mit
anderen Worten: Diejenigen den betreffenden Ausführungspfad
Als
solche internen Aufrufstellen
Um
dies zu prüfen, werden alle identifizierten internen Anweisungen
"for(i = 0; i < 5;
++i)", "if(v == 3)" und "if(condition)" als ein weiterer boolescher Ausdruck
einer Ausführungshypothese erzeugt und geprüft,
indem die betreffenden Bedingungen, Verknüpfungen und/oder
Werte von Variablen der jeweiligen Aufrufstelle
Der
boolesche Ausdruck für die Ausführungshypothese
der Anweisungen "for(i = 0; i < 5; ++i)",
"if(v == 3)" und "if(condition)" in Zeilen
- – Die
Bedingung "v == 3" in Zeile
27 ist falsch "false" und die Bedingung in Zeile31 wird als wahr "true" evaluiert innerhalb mindestens eines Zyklus der Schleife gemäß Zeile10 ; - – Die Schleifenbedingung in Zeile
10 mit "i < 5" kann wahr werden.
- - The condition "v == 3" in line
27 is false and the condition is in line31 is evaluated as true "true" within at least one cycle of the loop according to line10 ; - - The loop condition in line
10 with "i <5" can come true.
Beim
Beweisen der betreffenden Ausführungshypothese/n werden
die möglichen Bedingungen und Eingaben der betreffenden
internen Anweisungen "for(i = 0; i < 5; ++i)", "if(v == 3)" und "if(condition)"
geprüft. Dabei werden diese internen Anweisungen "for(i
= 0; i < 5; ++i)",
"if(v == 3)" und "if(condition)" anhand des erzeugten booleschen
Ausdrucks der Hypothese/n solange geprüft, bis alle diejenigen
Aufrufstellen oder Anweisungen "for(i = 0; i < 5; ++i)", "if(v == 3)" und "if(condition)"
in Zeilen
Wird
eine solche identifiziert, wie beispielsweise die Anweisung "if(condition)"
in Zeile
Beim
Prüfen der Anweisung "if(condition)" wird im vorliegenden
Ausführungsbeispiel identifiziert, dass diese niemals den
Wert "wahr" einnehmen wird, welcher Voraussetzung ist, um die Anweisung "dividend=1"
in Zeile
Je nach Komplexität des Programms kann gegebenenfalls eine neue Iteration mit ermittelten Aufrufstellen und/oder Anweisungen als Quelltextstellen zur Identifizierung weiterer Programmeingänge, die zu dem erwarteten Fehler durchgeführt werden.ever Depending on the complexity of the program may be a new iteration with determined call points and / or instructions as source text locations for identifying further program inputs, which are performed on the expected error.
Werden hingegen alle aufgestellten Hypothesen einschließlich der Anfangshypothese bestätigt, so wird kein Programmeingang identifiziert, der den erwarteten Fehler verursacht. In diesem Fall wird das Fehleranalyseverfahren abgebrochen.Become on the other hand all hypotheses including the Initial hypothesis confirmed, then no program input identified that causes the expected error. In this case the error analysis procedure is aborted.
- 1, 1.1, 1.2, 1.31, 1.1, 1.2, 1.3
- KontrollflussgraphenControl flow graph
- 2, 2.1 bis 2.72, 2.1 to 2.7
- Quelltextstellensource points
- 33
- Verzweigungsstellebranching point
- 44
- anweisungsbezogener Aufruf- und Kontrollflussgraphinstruction related Call and control flow graph
- 5, 5.1 bis 5.35, 5.1 to 5.3
- Ausführungspfadeexecution paths
- 66
- Programmquelltextprogram source code
- 77
- Funktionsaufruffunction call
ZITATE ENTHALTEN IN DER BESCHREIBUNGQUOTES INCLUDE IN THE 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 The documents listed by the applicant have been automated generated and is solely for better information recorded by the reader. The list is not part of the German Patent or utility model application. The DPMA takes over no liability for any errors or omissions.
Zitierte PatentliteraturCited patent literature
- - DE 69505038 T2 [0004] - DE 69505038 T2 [0004]
Claims (10)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102008015060A DE102008015060A1 (en) | 2007-10-23 | 2008-03-19 | Static error analysis method for program, involves starting new iteration with call determined areas as source text areas, and aborting new iteration when no call areas in previous iterations are determined |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102007050922.9 | 2007-10-23 | ||
DE102007050922 | 2007-10-23 | ||
DE102008006499.8 | 2008-01-29 | ||
DE102008006499 | 2008-01-29 | ||
DE102008015060A DE102008015060A1 (en) | 2007-10-23 | 2008-03-19 | Static error analysis method for program, involves starting new iteration with call determined areas as source text areas, and aborting new iteration when no call areas in previous iterations are determined |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102008015060A1 true DE102008015060A1 (en) | 2008-10-23 |
Family
ID=39768118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102008015060A Withdrawn DE102008015060A1 (en) | 2007-10-23 | 2008-03-19 | Static error analysis method for program, involves starting new iteration with call determined areas as source text areas, and aborting new iteration when no call areas in previous iterations are determined |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102008015060A1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69505038T2 (en) | 1994-04-18 | 1999-02-18 | Bull S.A., Louveciennes | Deadlock detection method in a multiprocessor system with shared memory |
-
2008
- 2008-03-19 DE DE102008015060A patent/DE102008015060A1/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69505038T2 (en) | 1994-04-18 | 1999-02-18 | Bull S.A., Louveciennes | Deadlock detection method in a multiprocessor system with shared memory |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69129067T2 (en) | METHOD FOR PRESENTING THE SCALARS DATA DEPENDENCIES FOR AN OPTIMIZATION COMPILER | |
EP1330685B1 (en) | Testing method and testing device for starting up systems which are controlled by means of a program logic | |
DE68926956T2 (en) | ARRANGEMENT FOR SHARING A GENERIC CODE FOR A DIGITAL DATA PROCESSING SYSTEM | |
WO2006105930A1 (en) | Diagnostic system for determining a weighted list of possible defective components on the basis of vehicle data and customer specifications | |
DE102006029138A9 (en) | Method and computer program product for the detection of memory leaks | |
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 | |
DE3854636T2 (en) | Automatic test process for logical devices. | |
EP3770766A1 (en) | Method for testing a system | |
DE69505038T2 (en) | Deadlock detection method in a multiprocessor system with shared memory | |
DE102019008598A1 (en) | Identification and visualization of associations between code generated by a model and sources that influence code generation | |
DE102008015060A1 (en) | Static error analysis method for program, involves starting new iteration with call determined areas as source text areas, and aborting new iteration when no call areas in previous iterations are determined | |
EP2302554A2 (en) | Method for identifying a section of computer program contained in a computer storage system | |
AT514731A2 (en) | Method for verifying generated software and verification device for carrying out such a method | |
DE10325513B4 (en) | Method and apparatus for creating a behavioral aspect of a formal verification circuit | |
EP0662226B1 (en) | Method of processing an application program on a parallel-computer system | |
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 | |
WO2004072744A2 (en) | Method for determining the processing sequence of function blocks of an automated system and corresponding automated system | |
DE102020209137A1 (en) | Method and device for operating fuzzing testing of a program code | |
WO2022161683A1 (en) | Error susceptibility of a build pipeline | |
EP3173928A1 (en) | Method and device for checking a component error tree | |
DE102022207612A1 (en) | Computer-implemented method for verifying a software component of an automated driving function | |
DE102015213581A1 (en) | Method for modeling a component error tree and computer program product | |
DE102021003842A1 (en) | Method for creating a configuration data set for a motor vehicle by means of an electronic computing device and electronic computing device | |
WO2024175581A1 (en) | Method and device for visualising debug data of a complex data processing network | |
DE10137297A1 (en) | Method for automated testing of software or software component robustness in which the number of test cases to be run is reduced by not running test cases containing known critical test values |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OAV | Applicant agreed to the publication of the unexamined application as to paragraph 31 lit. 2 z1 | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee |
Effective date: 20141001 |