DE19521357C2 - Fehlersuchverfahren - Google Patents
FehlersuchverfahrenInfo
- Publication number
- DE19521357C2 DE19521357C2 DE1995121357 DE19521357A DE19521357C2 DE 19521357 C2 DE19521357 C2 DE 19521357C2 DE 1995121357 DE1995121357 DE 1995121357 DE 19521357 A DE19521357 A DE 19521357A DE 19521357 C2 DE19521357 C2 DE 19521357C2
- Authority
- DE
- Germany
- Prior art keywords
- program
- subroutine
- point
- troubleshooting
- call
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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/3664—Environments for testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Description
Die vorliegende Erfindung betrifft ein Fehlersuchverfahren
für ein von einem Hauptprogramm aufrufbares Unterprogramm,
wobei das Hauptprogramm an einer Aufrufstelle einen Aufruf
für das Unterprogramm und das Unterprogramm einen Unterbre
chungspunkt enthält.
Bei der Online-Fehlersuche in Datenverarbeitungsprogrammen,
allgemein als Debuggen bezeichnet, wird üblicherweise das auf
Fehler zu untersuchende Programm unter Kontrolle eines soge
nannten Debuggers ausgeführt. (Siehe z. B. WÜLLEM, MARTIN van
und LASKOWSKI, MICHAEL, "Die SPS und ihr Debugger", in: Tech
nische Rundschau, Heft 40, 1991, Seiten 62-66). Hierzu wird
vom Betriebssystem aus der Debugger, also das Fehlersuchpro
gramm, aufgerufen. Von diesem Fehlersuchprogramm aus wird
dann das zu untersuchende Programm aufgerufen. Das zu unter
suchende Programm enthält in aller Regel einen Unterbre
chungspunkt. Bei Erreichen dieses Unterbrechungspunktes wird
die weitere Abarbeitung des zu untersuchenden Programms ge
stoppt und zum Debugger zurückgekehrt. Innerhalb des Debug
gers wird dann zyklisch eine Benutzerschnittstelle abgefragt
und gemäß den über die Benutzerschnittstelle eingegebenen An
weisungen Daten ausgelesen oder neu geschrieben. Auch können
über den Debugger im zu untersuchenden Programm neue Unter
brechungspunkte gesetzt, bisher vorhandene Unterbrechungs
punkte gelöscht und die Abarbeitung des zu untersuchenden
Programms fortgesetzt werden. Das Hauptprogramm, das Be
triebssystem also, hingegen wird erst wieder ausgeführt, wenn
der Debugger beendet wird. Im Prinzip kann der Rechner, auf
dem das Fehlersuchprogramm abgearbeitet wird, also beliebig
lange im Fehlersuchprogramm verweilen, ohne zum Betriebssy
stem zurückzukehren.
Speicherprogrammierbare Steuerungen weisen ein Hauptprogramm
auf, welches zyklisch zu wiederholen ist. Die Zeit für einen
Zyklus wird dabei innerhalb der speicherprogrammierbaren
Steuerung überwacht. Wenn diese Zeit die maximale Zykluszeit
überschreitet, behandelt dies die speicherprogrammierbare
Steuerung als Fehler. Sie überführt daraufhin die von ihr ge
steuerte Anlage in einen sicheren Zustand und beendet die
weitere Abarbeitung des Programms.
Es ist sofort ersichtlich, daß die Überwachung des Hauptpro
gramms auf zyklische Ausführung einerseits und das prinzi
piell beliebig lange Verweilen im Debugger andererseits sich
widersprechen. Daher war es bisher nicht möglich, Programme
für speicherprogrammierbare Steuerungen online, d. h. in der
speicherprogrammierbaren Steuerung, auf Fehler zu untersu
chen; insbesondere gilt es im Falle einer Online-Fehlersuche
bei speicherprogrammierbaren Steuerungen, einen Zustand si
cher zu vermeiden, bei dem die Ausführung des zyklischen
Hauptprogramms durch ein Fehlersuchprogramm dauerhaft unter
brochen wird, denn eine derartige Unterbrechung ist im Falle
von speicherprogrammierbaren Steuerungen nicht tolerierbar.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
Verfahren anzugeben, mit dem dies möglich wird.
Die Aufgabe wird durch ein Verfahren gemäß Anspruch 1 gelöst.
Erfindungsgemäß wird also - im Unterschied zum Stand der
Technik - beim Debuggen die zyklische Abarbeitung vom Fehler
suchprogramm zum Hauptprogramm verlagert. Dadurch ist gewähr
leistet, daß die maximale Zykluszeit trotz Online-Fehlersuche
nicht überschritten wird. Die Online-Fehlersuche wird also
möglich.
Weitere Vorteile und Einzelheiten ergeben sich aus der nach
folgenden Beschreibung eines Ausführungsbeispiels. Dabei zei
gen:
Fig. 1 die Aufruffolge der verschiedenen Programme und
Fig. 2 ein Struktogramm des Fehlersuchprogramms.
Fig. 1 zeigt ein Hauptprogramm 1, das zyklisch ausgeführt
wird, wie aus Fig. 1 aufgrund des Pfeils 2 sofort ersichtlich
ist. Fig. 1 zeigt ferner ein Unterprogramm 3, welches vom
Hauptprogramm 1 aus aufrufbar ist. Hierzu enthält das Haupt
programm 1 eine Aufrufstelle 4, an welcher ein Aufruf für das
Unterprogramm 3 abgespeichert ist. Wenn das Fehlersuchpro
gramm 5 deaktiviert ist, wird bei Erreichen der Aufrufstelle
4 stets das Unterprogramm 3 aufgerufen und ausgeführt. Nach
Ausführen des Unterprogramms 3 wird mit der Abarbeitung des
Hauptprogramms nach der Aufrufstelle 4 fortgefahren.
Wenn das Fehlersuchprogramm 5 hingegen aktiviert ist, wird
bei Erreichen der Aufrufstelle 4 nicht direkt das Unterpro
gramm 3 aufgerufen, sondern zunächst das Fehlersuchprogramm
5. Im Fehlersuchprogramm 5 wird im Programmteil 6 eine Benut
zerschnittstelle bedient. Hierauf wird später nochmals in
Verbindung mit Fig. 2 näher eingegangen werden.
Nach Bedienen der Benutzerschnittstelle wird, wenn das Feh
lersuchprogramm 5 erstmals aufgerufen wurde, im Programmteil
7 das Unterprogramm 3 aufgerufen. Das Unterprogramm 3 wird
ausgeführt, bis es den Unterbrechungspunkt 8 (BP = break
point) erreicht. Bei Erreichen des Unterbrechungspunktes 8
wird die weitere Abarbeitung des Unterprogramms 3 gestoppt
und eine Interruptserviceroutine 9 aufgerufen. Diese rettet
aus dem Prozessor, der das Unterprogramm 3 ausführt, unter
programmspezifische Daten (üblicherweise als Prozessorkontext
bezeichnet) in einen dafür vorgesehenen Speicherbereich und
kehrt dann direkt zum Fehlersuchprogramm 5 zurück. Dies ist
in Fig. 1 durch die durchgezogenen Pfeile zwischen Fehlersuch
programm 5, Interruptserviceroutine 9 und Unterprogramm 3 an
gedeutet. Das Fehlersuchprogramm 5 wird daraufhin fortgesetzt
und nach Beendigung des Fehlersuchprogramms 5 zum Hauptpro
gramm 1 zurückgekehrt. Das Hauptprogramm 1 wird dann nach der
Aufrufstelle 4 fortgesetzt.
Wenn dann bei einem weiteren Durchlauf des Hauptprogramms 1
erneut die Aufrufstelle 4 erreicht wird, wird wieder das Feh
lersuchprogramm 5 aufgerufen. Beim Abarbeiten des Fehlersuch
programms 5 wird auch erneut die Benutzerschnittstelle durch
den Programmteil 6 bedient. Danach wird aber im Regelfall
nicht erneut das Unterprogramm 3 aufgerufen, sondern direkt
zum Hauptprogramm 1 zurückgekehrt und das Hauptprogramm 1
nach der Aufrufstelle 4 fortgesetzt.
Aus obiger Schilderung ist ersichtlich, daß das Bedienen der
Benutzerschnittstelle zum einen im Rahmen des Fehlersuchpro
gramms 5 ausgeführt wird und daß das Bedienen der Benutzer
schnittstelle zum anderen bei jedem Aufrufen des Unterpro
gramms 5, also auch vor dem Aufrufen des Unterprogramms 3,
erfolgt.
Über die Benutzerschnittstelle ist zumindest der Unterbre
chungspunkt 8 setz- und löschbar. Gleiches gilt selbstver
ständlich auch für einen weiteren Unterbrechungspunkt, der
z. B. an der Stelle 8′ gesetzt bzw. gelöscht werden kann. Fer
ner ist es auch möglich, Variablen, also gespeicherte Werte,
die vom Unterprogramm 3 verwertet und/oder geändert werden,
mittels des Programmteils 6 abzufragen. Gegebenenfalls kann
auch zugelassen werden, diese Werte mittels des Programmteils
6 zu ändern.
Wenn der Unterbrechungspunkt 8 aufgrund entsprechender Ein
gaben über die Benutzerschnittstelle gelöscht wird, wird beim
nächsten Erreichen des Programmteils 7 der Prozessorkontext
aus dem Speicherbereich, in den er gerettet wurde, ausgelesen
und wieder in den Prozessor, der das Unterprogramm 3 fortset
zen soll, geladen. Dann wird das Unterprogramm 3 vom Fehler
suchprogramm 5 aus aufgerufen und ab dem Unterbrechungspunkt
8 weiter ausgeführt. Dies ist in Fig. 1 durch den gestrichel
ten Pfeil vom Fehlersuchprogramm 5 zum Unterprogramm 3 ange
deutet. Das Unterprogramm 3 wird dann im Regelfall bis zum
Ende ausgeführt und, wie durch den zweiten gestrichelten
Pfeil vom Unterprogramm 3 zum Fehlersuchprogramm 5 angedeu
tet, über das Fehlersuchprogramm 5 zum Hauptprogramm 1 zu
rückgekehrt. Bei weiteren Aufrufen des Unterprogramms 3 wird
dann dieses aufgerufen und in üblicher Weise ausgeführt.
Wenn beim Bedienen der Benutzerschnittstelle ein neuer Unter
brechungspunkt 8′ gesetzt wurde, wird das Unterprogramm 3
selbstverständlich nur bis zum neu gesetzten Unterbrechungs
punkt 8′ ausgeführt. Die weitere Vorgehensweise ist dann, wie
in Fig. 1 durch die strichpunktierten Linien angedeutet, völ
lig analog zu der bei gesetztem Unterbrechungspunkt 8.
Fig. 2 zeigt nun ein Struktogramm des Fehlersuchprogramms 3,
soweit es zum Verständnis der vorliegenden Erfindung erfor
derlich ist.
Im Rahmen des Fehlersuchprogramms 3 wird zunächst im Pro
grammteil 6-1 die Benutzerschnittstelle, also z. B. über eine
Tastatur oder mittels einer Maus und eines Bildschirms einge
gebene Befehle, abgefragt. Im Programmteil 6-2 wird dann
überprüft, ob Befehle eingegeben wurden. Eingegebene Befehle
werden ausgeführt. Mögliche Befehle sind beispielsweise die
Abfrage von Variablen, das Verändern von Variablen und das
Setzen und Löschen von Unterbrechungspunkten.
Wie bereits erwähnt, kann beim Abarbeiten des Programmteils
6-2 unter anderem auch der Unterbrechungspunkt 8 gelöscht
werden. Wenn dies der Fall ist, wird selbstverständlich auch
die Variable exe-UP von ihrem Wert "nein" auf den Wert "ja"
geändert. Die diesbezügliche Abfrage erfolgt im Schritt 6-3,
das Ändern der Variable exe-UP gegebenenfalls im Schritt 6-4.
Im Programmteil 7-1 wird dann die Variable exe-UP abgefragt.
Wenn der Wert der variablen exe-UP "nein" ist, erfolgt gemäß
Programmteil 7-2 keine weitere Aktion. Wenn der Wert der Va
riablen exe-UP dagegen "ja" ist, wird im Programmteil 7-3 ab
gefragt, ob der Wert der Variablen continuation "ja" oder
"nein" ist. Wenn der Wert "nein" ist, handelt es sich um ei
nen normalen Unterprogrammaufruf des Unterprogramms 3, der
dann im Programmteil 7-4 erfolgt. Ansonsten handelt es sich
um eine Fortsetzung des Unterprogramms 3 nach dem Unterbre
chungspunkt 8. In diesem Fall wird der gerettete Prozessor
kontext wieder in den Prozessor geladen und die Abarbeitung
des Unterprogramms 3 nach dem Unterbrechungspunkt 8 fortge
setzt. Diese Schritte erfolgen im Programmteil 7-5.
Nach der Rückkehr aus dem Unterprogramm 3 in das Fehlersuch
programm 5 wird im Programmteil 7-6 abgefragt, ob das Unter
programm 3 normal beendet wurde oder ob das Unterprogramm 3
einen Unterbrechungspunkt 8 bzw. 8′ erreichte und von dort in
das Fehlersuchprogramm 5 zurückgekehrt ist. Wenn das Unter
programm 3 vollständig abgearbeitet wurde wird im Programm
teil 7-7 die Variable exe-UP auf "ja" gesetzt und die Vari
able continuation auf "nein". Ansonsten werden im Programm
teil 7-8 die Variable exe-UP auf "nein" und die Variable con
tinuation auf "ja" gesetzt. Sodann wird durch Abarbeiten des
Programmteils 7-9 zum Hauptprogramm 1 zurückgekehrt.
Claims (8)
1. Fehlersuchverfahren für ein von einem Hauptprogramm (1)
aufrufbares Unterprogramm (3), wobei das Hauptprogramm (1) an
einer Aufrufstelle (4) einen Aufruf für das Unterprogramm (3)
und das Unterprogramm (3) einen Unterbrechungspunkt (8) ent
hält, mit folgenden Merkmalen:
- - das Hauptprogramm (1) wird fortgesetzt zyklisch ausgeführt, wobei
- - beim ersten Erreichen der Aufrufstelle (4) ein Fehler suchprogramm (5) aufgerufen und vom Fehlersuchprogramm (5) aus das Unterprogramm (3) aufgerufen und ausgeführt wird, bis es den Unterbrechungspunkt (8) erreicht,
- - bei Erreichen des Unterbrechungspunkts (8) die Abarbeitung des Hauptprogramms (1) nach der Aufrufstelle (4) fortgesetzt wird und
- - bei weiteren Erreichen der Aufrufstelle (4) eine Be nutzerschnittstelle (6) des Fehlersuchprogramms (5) bedient und das Hauptprogramm (1) nach der Aufrufstelle (4) fortge setzt wird.
2. Fehlersuchverfahren nach Anspruch 1, dadurch
gekennzeichnet, daß beim Erreichen des Unter
brechungspunktes (8) unterprogrammspezifische Daten aus einem
Prozessor ausgelesen und in einen dafür vorgesehenen Spei
cherbereich gerettet werden.
3. Fehlersuchverfahren nach Anspruch 1 oder 2,
dadurch gekennzeichnet, daß bei Er
reichen der Aufrufstelle (4) stets, also auch vor dem Auf
rufen des Unterprogramms (3), die Benutzerschnittstelle be
dient wird.
4. Fehlersuchverfahren nach Anspruch 1, 2 oder 3,
dadurch gekennzeichnet, daß das Be
dienen der Benutzerschnittstelle im Rahmen des Fehlersuch
programms (5) ausgeführt wird.
5. Fehlersuchverfahren nach Anspruch 1, 2, 3 oder 4,
dadurch gekennzeichnet, daß über die
Benutzerschnittstelle zumindest der Unterbrechungspunkt (8)
setz- und löschbar ist und daß gespeicherte Werte abfragbar
sind.
6. Fehlersuchverfahren nach Anspruch 5, dadurch
gekennzeichnet, daß über die Benutzerschnitt
stelle auch gespeicherte Werte änderbar sind.
7. Fehlersuchverfahren nach Anspruch 5 oder 6,
dadurch gekennzeichnet, daß
- - daß nach dem Löschen des Unterbrechungspunktes (8) beim nächsten Erreichen der Aufrufstelle das Unterprogramm (3) aufgerufen und ab dem Unterbrechungspunkt (8) ausgeführt wird, und
- - daß, wenn nicht ein weiterer Unterbrechungspunkt (8′) ge setzt wurde, bei weiteren Erreichen der Aufrufstelle (4) das Unterprogramm (3) aufgerufen und ausgeführt wird.
8. Fehlersuchverfahren nach Anspruch 2 und 7,
dadurch gekennzeichnet, daß vor dem
ersten Aufrufen des Unterprogramms (3) nach dem Löschen des
Unterbrechungspunktes (8) die unterprogrammspezifischen Daten
aus dem dafür vorgesehenen Speicherbereich ausgelesen und in
den Prozessor eingeschrieben werden.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE1995121357 DE19521357C2 (de) | 1995-06-12 | 1995-06-12 | Fehlersuchverfahren |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE1995121357 DE19521357C2 (de) | 1995-06-12 | 1995-06-12 | Fehlersuchverfahren |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19521357A1 DE19521357A1 (de) | 1996-06-27 |
DE19521357C2 true DE19521357C2 (de) | 1997-12-11 |
Family
ID=7764195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1995121357 Expired - Fee Related DE19521357C2 (de) | 1995-06-12 | 1995-06-12 | Fehlersuchverfahren |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE19521357C2 (de) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103010888B (zh) * | 2012-12-18 | 2016-03-09 | 张国庆 | 矿井提升机s7-300电控保护试验方法 |
-
1995
- 1995-06-12 DE DE1995121357 patent/DE19521357C2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE19521357A1 (de) | 1996-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2953432C1 (de) | Vorrichtung zum Testen eines Mikroprogramms | |
DE3206891C2 (de) | ||
DE10036278A1 (de) | Verfahren zur Überwachung eines Programmablaufs mittels einer Debug Logik | |
DE10127170A1 (de) | Fehlersuchverfahren und Fehlersuchvorrichtung | |
DE102005018910A1 (de) | Verfahren zum Aufrüsten eines mikroprozessorgesteuerten Geräts mit neuem Softwarecode über ein Kommunikationsnetzwerk | |
DE2407241A1 (de) | Verfahren und anordnung zur erhoehung der verfuegbarkeit eines digitalrechners | |
DE1285219B (de) | Steuerwerk zur Ausfuehrung von Unterprogrammen | |
DE19521357C2 (de) | Fehlersuchverfahren | |
DE69127496T2 (de) | Steuerungsgerät mit sequenzieller Funktionsplandarstellung zur Steuerung einer Maschine in rückwärtigem Betrieb | |
DE4445651A1 (de) | Verfahren zur Steuerung von technischen Vorgängen | |
EP2496993B1 (de) | Verfahren zur absicherung von end-user programmänderungen durch formale kontrakte und programmverifikation in der automatisierungstechnik | |
EP1950635B1 (de) | Verfahren zum Betrieb eines Automatisierungssystems | |
DE60225464T2 (de) | Robotersystem und verfahren und software für das robotersystem | |
DE102004006767A1 (de) | Verfahren und Vorrichtung zum Transport von Datenabschnitten mittels eines DMA-Controllers | |
DE102007045602A1 (de) | Programmiersystem | |
DE10057782C1 (de) | Verfahren und Vorrichtung zum Überführen einer Prozesssteuerung von einem Solobetrieb in einen redundanten Steuerungsbetrieb | |
EP1947536B1 (de) | Verfahren zur Konfigurationsänderung eines laufenden Automatisierungsgerätes | |
DE102019008515A1 (de) | Informationsverarbeitungsvorrichtung | |
EP3720056B1 (de) | Verfahren und system zur parallelen echtzeitanalyse bei funktionsprüfungen von hardware und software von steuergeräten | |
AT522186B1 (de) | Computerimplementiertes Verfahren zur rechnergestützten Erzeugung eines ausführbaren Steuerungsprogramms zur Steuerung und/oder Regelung eines technischen Prozesses | |
EP1330714B1 (de) | Programmierwerkzeug | |
EP1594063B1 (de) | Verfahren zum Überprüfen von Steuerungsprogrammen | |
WO2021013348A1 (de) | Selbstlernende routine für kompatibilitätsprüfung | |
DE4210844A1 (de) | Programmierbare steuerung und verfahren zur ueberwachung eines ablaufprogrammes der steuerung | |
EP2363771A1 (de) | Programmierschnittstelle und Verfahren zur Steuerung einer Anwendung eines Gerätes einer industriellen Automatisierungsanordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OAV | Applicant agreed to the publication of the unexamined application as to paragraph 31 lit. 2 z1 | ||
OP8 | Request for examination as to paragraph 44 patent law | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |