deep

a Cross Development Platform for Java

User Tools

Site Tools


dev:logging

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
dev:logging [2014/07/21 10:03] – external edit 127.0.0.1dev:logging [2022/12/20 11:29] (current) – [Error Reporting] ursgraf
Line 1: Line 1:
 ====== Logging and Error Reporting ====== ====== Logging and Error Reporting ======
 ===== Logging ===== ===== Logging =====
-The class //StdStreams// in the package //ch.ntb.inf.deep.host// defines three output streams.+The class //StdStreams// in the package //org.deepjava.host// defines three output streams.
  
   * log: is used for normal logging (e.g. successful compilation)   * log: is used for normal logging (e.g. successful compilation)
Line 11: Line 11:
  
 ==== Debug Output ==== ==== Debug Output ====
-Für ausführliche Debugausgaben während der Entwicklung und Fehlersuche wenden wir aus Effizienzgründen folgendes Verfahren an +Debug output is very convenient during the development process. For efficiency reasons we use the following schemeEvery class has a constant //debug// of type booleanIf //debug == true// the compiler inserts write statements to //StdStreams.vrb//. To enable debug output you have to edit the source code (switch on debug). In the productive code their is no runtime penalty.
-Pro Klasse kann eine Konstante vom Typ boolean //debug// definiert werdenWenn //debug == true// wird eine gewünschte Ausgabe auf den //verbose-stream// (StdStreams.vrb) geschrieben. Um Debugausgaben zu erhalten, muss also die Quelle editiert werden. Dafür wird im produktiven Einsatz bei ausgeschaltetem //debug// kein Code erzeugt.+
  
 ===== Error Reporting ===== ===== Error Reporting =====
-Für die Fehler-Ausgabe sollte die Klasse ErrorReporter im Package //ch.ntb.inf.deep.host// verwendet werdenBei jeder Ausgabe eines Fehlers wird die statische Variable //nofErrors// inkrementiertDer Launcher überprüft vor jedem Schritt diese Variable und bricht nach einem Fehler ab.+The class ''org.deepjava.host.ErrorReporter'' is used for reporting errorsEach error increments //nofErrors//The launcher checks this variable and stops if necessary.
  
-Der ErrorReporter benötigt die Datei ErrorMsg.txt im rsc OrdnerIn dieser Datei werden die Fehler-Nummern mit ihren Beschreibungen und möglichen Lösungen eingetragen.+The ''ErrorReporter'' needs the file //ErrorMsg.txt// in the folder //rsc//This text file contains error numbers, descriptions and possible solution. The methods //error(int errNr)// and //error(int errNr, String additonalInfo)// access //ErrorMsg.txt//
  
-Die Methoden error(int errNr) und error(int errNr, String additonalInfogreifen auf ErrorMsg.txt zu. Die Methoden suchen in der Datei die übergebene Fehlernummer, und geben diese mit der Beschreibung und falls vorhanden mit den möglichen Lösungen aus. Die zusätzlichen Informationen, wie z.B. Datei- und Zeilennummerangaben, werden hinten angefügt. +Further, there is a method //error(String errMsg)//It allows for outputting a message without error number.
- +
-Im Weitern gibt es noch die Methode error(String errMsg), diese gibt die Fehlermeldung direkt aus, ohne dass eine Fehlernummer dafür definiert werden  +
-muss.+
  
 ==== Stopping after Error ==== ==== Stopping after Error ====
-Der Launcher prüft vor jedem weiteren Schritt, ob kein Fehler aufgetreten istWas aber passiertwenn innerhalb eines Schrittes (z.Bder Berechnung der Codegenerierungein Fehler auftritt, und zwar so, dass dieser Teil nicht mehr abgeschlossen werden kannDas ist z.B. der Fall, wenn kein Register mehr alloziert werden kann. Unter Umständen ist die Aufruferkette sehr gross und wir wollen nur im äussersten Rufer, dem Launcher jeweils //nofErrors// prüfen. \\ +The launcher checks if no error occured before starting the next stepHoweverwhat happens if there is an error within a step (e.gwhile allocating registersand it's not possible to complete this stepWe do not want to check for //nofErrors// within each step. \\ 
-Alle Methoden sollen so geschrieben werden, dass im Fehlerfall der ErrorReporter aufgerufen wird, aber die Methode trotzdem einen brauchbaren Rückgabewert liefert (also z.Beinfach das Register oder den Node 0) und so die äusseren Methoden durchlaufenU.U. können auch spezielle Objekte extra dafür geschaffen werden. \\ +Every method should call the error reporter in case of an error and at the same time it should return a useable value (e.gregister or node 0). If necessary special objects should be created for this purpose. \\ 
-Es macht trotzdem Sinn daneben auch Assertions einzubauenDiese sind dann nützlich, wenn wir als Entwickler den Fehler genau zu lokalisieren versuchen.+Use assertions whenever possibleThey will be switched of in the productive code but can be enabled during the development process.
 \\  \\ 
 ----  ---- 
Line 132: Line 128:
 |808|bypass is not unlocked|  | |808|bypass is not unlocked|  |
 |809|programming failed|  | |809|programming failed|  |
 +|810|programmer not found|  |
 +|811|class to connect to programmer not found|  |
 +|812|plugin not found|  |
 +|813|BDI packet wrong, try to reset BDI|  |
 +|814|ready bit not set, try to reset BDI|  |
  
 === Debugger: 900 - 999 === === Debugger: 900 - 999 ===
dev/logging.1405929792.txt.gz · Last modified: 2016/02/25 13:33 (external edit)