warum in *.class-Dateien loggen?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

:### in einen Buch hab ich folgendes gelesen:

:meld: Im Entwickler-Build sollen jedoch expliziet alle verfügbaren Debug-Informationen in die .class Dateien eingebunden werden.

Hierzu eine Frage:

Warum werden in die .class Dateien Debug-Informationen eingebunden? Man loggt doch nicht in die .class Dateien rein... hab ich bisher zumindest nie so gemacht. Eigentlich sollten die Debug Informationen doch in die Console und zusätzlich in eine log-Datei.

Könnt ihr mir kurz erklären, was mit diesem Satz gemeint ist?
 
G

Guest

Gast
mmm... habs mir mal durchgelesen. Mein Englisch ist leider nicht das beste. Was ich mitgenommen habe ist, dass man wirklich bewußt in die *.class Dateien loggt. Was ich allerdings noch nicht verstanden habe:

Warum loggt man in die Class-Dateien, wenn man es doch auch in eine Log-Datei loggen kann? In der Log-Datei wäre der ganze Kram doch viel übersichtlicher?
 
S

SlaterB

Gast
es geht darum dass beim Compilieren mehr Informationen aus dem Quellcode mit in die .class-Datei übernommen wird,
z.B. Namen von lokalen Variablen,

ein Logger kann damit vielleicht nicht mehr anfangen als vorher, aber höhere Debugging-Tools finden sowas gut

http://de.wikipedia.org/wiki/Debugger
 

Ebenius

Top Contributor
Anonymous hat gesagt.:
Warum loggt man in die Class-Dateien, wenn man es doch auch in eine Log-Datei loggen kann? In der Log-Datei wäre der ganze Kram doch viel übersichtlicher?

Da hast Du was ganz falsch verstanden. Der Compiler fügt Debug-Informationen in die .class-Dateien ein. Diese Informationen enthalten zum Beispiel Zeileninformationen bezogen auf den Java-Quelltext. Das ist zum Beispiel wichtig, damit man weiß, an welcher Stelle im Quelltext ein Fehler aufgetreten ist.

Das ganze ist einstellbar, siehe javac command line syntax:
Code:
$ javac -help

Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
Hilft das?

Grüße, Ebenius
 
G

Guest

Gast
Kann ich mir das so vorstellen:

Szenario 1:

Person A kompiliert den Quellcode so, dass KEINE Debuginformationen in die *.class Dateien geschrieben werden. Anschließend startet sie das Programm. Das Programm stürzt bei Methode test ab, da diese Methode einen Fehler enthält. Nun kann mir die JVM zwar anzeigen welcher Fehler aufgetreten ist, sie kann mir allerdings nicht sagen, in welcher Zeile des Quellcodes (*.java), da die Classdateien ja keine Debuginformationen enthalten und damit auch keine Zeileninformationen.

Szenario 2:

Person B kompiliert den Quellcode so, dass Debuginformationen in die *.class Dateien geschrieben werden. Anschließend startet sie das Programm. Das Programm stürzt bei Methode test ab, da diese Methode einen Fehler enthält. Nun kann mir die JVM anzeigen welcher Fehler aufgetreten ist. Außerdem kann sie anzeigen, in welcher Zeile des Quellcodes (*.java), da die Classdateien ja nun Debuginformationen enthalten und damit auch Zeileninformationen.
 

Ebenius

Top Contributor
Anonymous hat gesagt.:
Kann ich mir das so vorstellen: [...]

Das ist ziemlich richtig, ja.

Im Beispiel sieht das dann so aus:
Code:
package com.ebenius;

public class A {
  public static void main(String[] args) {
    throw new NullPointerException("Nope");
  }
}

Mit Debug-Info "line" & "source" siehst Du:
Console hat gesagt.:
Exception in thread "main" java.lang.NullPointerException: Nope
at com.ebenius.A.main(A.java:5)

Ohne Debug-Info "line", aber mit Debug-Info "source" siehst Du:
Console hat gesagt.:
Exception in thread "main" java.lang.NullPointerException: Nope
at com.ebenius.A.main(A.java)

Ohne Debug-Info "line", "source" siehst Du:
Console hat gesagt.:
Exception in thread "main" java.lang.NullPointerException: Nope
at com.ebenius.A.main(Unknown Source)

EDIT: Damn it, ich bin heut zu blöd für BB-Code :-D

Grüße, Ebenius
 
G

Guest

Gast
Dann noch schnell zwei abschließende Fragen:

1.)
Das ich die Debug-Informationen beim Entwickler-Build brauche ist klar. In dem Buch wird allerdings geschrieben, dass man die Debug-Informationen beim Integration-Build und beim Release-Build weglassen sollte. Wieso eigentlich? Sind die Debug Informationen innerhalb der *.class so Performancelastig?

2.)
In der default-Einstellung von javac werden die Debug-Informationen geschrieben oder? Ich könnte jetzt auch nachschauen... aber vielleicht kannst du mir es ja direkt sagen?
 

Landei

Top Contributor
1.) Ich denke, dass das nur einen minimalen Unterschied macht. Du solltest die debug-Informationen drin lassen, falls du nicht auf das allerletzte Quentchen Performance angewiesen bist.
 

tfa

Top Contributor
Debuginformationen kann man aus den Class-Dateien nehmen, wenn man sich sicher ist, dass das Programm perfekt ist und nie wieder Fehler auftreten. Also niemals.
Die Performanceeinbußen sind sicherlich nicht messbar.
Was ist denn das für ein Buch?
 

Ebenius

Top Contributor
SlaterB hat gesagt.:
sind Debug-Informationen auch ein Sicherheitsproblem, Stichwort Dekompilierung? ;)

Sicher. Wenn Du Dir darüber Sorgen machst, dann kannst Du die "var"-Infos rauslassen. Also:
Code:
javac -g:source -g:line

Allerdings bringt das auch nur wenig Sicherheit. Ein Obfuscater wäre da angebracht. Aber meiner Meinung nach machen sich die Leute die sowas tun a) mehr Aufwand als gut ist und b) mehr Probleme als Freude.

Grüße, Ebenius
 

Ebenius

Top Contributor
Anonymous hat gesagt.:
1.) [...] Sind die Debug Informationen innerhalb der *.class so Performancelastig?
Ein bisschen größer und fast nicht langsamer. Wir lassen sie immer drin und ich empfehle jedem (der das darf) es genauso zu tun.

Anonymous hat gesagt.:
2.) In der default-Einstellung von javac werden die Debug-Informationen geschrieben oder? [...]
Ja, Sun scheint meine Meinung zu teilen. :D

Grüße, Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N wie *.class-Dateien mit log4j loggen? Java Basics - Anfänger-Themen 9
C "HelloWorld" - Dateien erstellt, aber ist es eine class-Datei? Java Basics - Anfänger-Themen 2
A attach source: Zusammenhang zwischen JAR und .class/.java Dateien? Java Basics - Anfänger-Themen 2
C Klassen Class Files nachladen (mehrer .jar Dateien) Java Basics - Anfänger-Themen 2
S Class Dateien decompilieren Java Basics - Anfänger-Themen 4
P Compiler-Fehler .java Dateien kompilieren und .class Dateien zur .jar Java Basics - Anfänger-Themen 4
K OOP duplicate class, öffentliche Klasse in unterschiedlichen Java Dateien speichern? Java Basics - Anfänger-Themen 3
C class Dateien einbinden Java Basics - Anfänger-Themen 22
W wie bekomme ich die .class Dateien ausgelesen Java Basics - Anfänger-Themen 11
M JApplet in HTML einbetten > mehrere .class-Dateien Java Basics - Anfänger-Themen 9
TheKing Mac-class dateien öffnen Java Basics - Anfänger-Themen 2
M dateien relativ zur lage der .class-Dateien adressieren Java Basics - Anfänger-Themen 3
C Auf ProgressBar von zwei verschiedenen .class Dateien zugrei Java Basics - Anfänger-Themen 2
M class Dateien per cmd nicht ausführbar Java Basics - Anfänger-Themen 12
T class dateien in projekt einfuegen Java Basics - Anfänger-Themen 8
J ".java" und ".class"-Dateien ;-) Java Basics - Anfänger-Themen 6
A Class-Dateien? u.a. Java Basics - Anfänger-Themen 10
J Probleme mit dem Ausführen von .class Dateien Java Basics - Anfänger-Themen 14
H exterme class Dateien in Eclipse Project einbinden Java Basics - Anfänger-Themen 1
M Einbinden fertiger Klassen (.class-Dateien) in Projekt Java Basics - Anfänger-Themen 3
G Anzahl .class Dateien verringern Java Basics - Anfänger-Themen 15
C Kann man class Dateien auch lesen? Java Basics - Anfänger-Themen 8
T *.class Dateien Java Basics - Anfänger-Themen 12
Z Mit Eclipse Class Dateien benutzen. Java Basics - Anfänger-Themen 7
H class Dateien ausführbar machen Java Basics - Anfänger-Themen 2
N .class-Dateien bearbeiten? Java Basics - Anfänger-Themen 4
M Class Dateien verwenden! Java Basics - Anfänger-Themen 10
lan2711 Class Dateien auf anderen Rechner zum Laufen kriegen. Java Basics - Anfänger-Themen 5
Silver-Blue wie führe ich class dateien im Web oder auf Server aus Java Basics - Anfänger-Themen 3
G Programm findet andere .class-Dateien nicht Java Basics - Anfänger-Themen 6
B Was ist der Unterschied zwischen .java- und .class Dateien Java Basics - Anfänger-Themen 3
T IntelliJ / SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". Java Basics - Anfänger-Themen 4
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
C Was tun wenn .class erwartet wird ? Java Basics - Anfänger-Themen 6
M "Class<T> clazz" im Constructor - auch für int möglich? Java Basics - Anfänger-Themen 7
M error: '.class' expected switch(char) Java Basics - Anfänger-Themen 32
123456789sssssaaaa Java Wrapper Class Java Basics - Anfänger-Themen 13
FHEFHJHFJH error: class names, 'summe_bsp', are only accepted if annotation processing is explicitly requested Java Basics - Anfänger-Themen 3
N Variabel in eine class mit "extends JLabel" übertragen Java Basics - Anfänger-Themen 2
J Methode als Class anlegen Java Basics - Anfänger-Themen 7
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
G Could not initialize class “NoClassDefFoundError" Java Basics - Anfänger-Themen 2
Mr_Kleeblatt Operatoren if (arri[i] != "test.java"&& arri[i] != "test.class") Java Basics - Anfänger-Themen 3
S Generics-Problem: Class, Class<?>, Class<Object> Java Basics - Anfänger-Themen 4
J Klassen .class Datei öffnen Java Basics - Anfänger-Themen 31
O Verständniss Problem bei abstract class Java Basics - Anfänger-Themen 7
H .class Datei wird nicht ausgeführt Java Basics - Anfänger-Themen 2
H .jar unterschied .class Java Basics - Anfänger-Themen 3
J class version 52 und 56 Java Basics - Anfänger-Themen 6
L Fehler bei der AUsführung der .class Datei Java Basics - Anfänger-Themen 23
A Class not found - Jar liegt am classpath Java Basics - Anfänger-Themen 2
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
dapzoo Class File Version zu niedrig? Ausführen über Eingabeaufforderung nicht möglich Java Basics - Anfänger-Themen 14
J Methoden Methoden einer public class AutoCompleteTextField verwenden Java Basics - Anfänger-Themen 14
R HTTP-Links in Java Class finden Java Basics - Anfänger-Themen 3
D jsoup get class name mit leerzeichen Java Basics - Anfänger-Themen 7
D doc.seect jsouo bestimmtes class element finden Java Basics - Anfänger-Themen 1
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
N Fehlende .class Datei Java Basics - Anfänger-Themen 4
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
C Was macht `public class ClassName<T extends Comparable<T>>`? Java Basics - Anfänger-Themen 14
W Externe class in Eclipse importieren Java Basics - Anfänger-Themen 0
X Variablen Problem bei Aufteilung in verschiedene Class-Files Java Basics - Anfänger-Themen 4
Javafan01 Dateiname und Public class Java Basics - Anfänger-Themen 4
S Klassen Class mit Funktionen importieren Java Basics - Anfänger-Themen 1
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Compiler-Fehler Fehler bei Vektor (E extends Object declared in class Vector) Java Basics - Anfänger-Themen 9
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
S setText aus anderer class heraus Java Basics - Anfänger-Themen 6
L Classpath Zwei Bibliotheken enthalten gleiche .class Datei Java Basics - Anfänger-Themen 6
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
D Interface Amazon Skill Kit, Interface but method in other class? Java Basics - Anfänger-Themen 3
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
wilmaed protected class Java Basics - Anfänger-Themen 0
C Erste Schritte Fehler beim *.class Aufruf über cmd.exe Java Basics - Anfänger-Themen 9
N class in class Java Basics - Anfänger-Themen 13
B Linux - Error: Could not find or load main class application.Main Java Basics - Anfänger-Themen 28
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
Azazel Ist die abstract class das selbe wie ein interface ? Java Basics - Anfänger-Themen 33
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
P could not find main class obwohl da Java Basics - Anfänger-Themen 17
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
D Compiler-Fehler error: .class expected Java Basics - Anfänger-Themen 2
S Dataflow von Start bis die SystemProperties class Java Basics - Anfänger-Themen 1
Detox Class Datei erzeugen nicht möglich über cmd Java Basics - Anfänger-Themen 1
M Scanner class Java Basics - Anfänger-Themen 6
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
P Compiler-Fehler Could not load or find main class fehler Java Basics - Anfänger-Themen 15
J Gestaltung der GUI.class Java Basics - Anfänger-Themen 1
P Compiler-Fehler could not find or load main class Java Basics - Anfänger-Themen 5
Z Gleiches Verzeichnis für class und java unter Windows Muss? Java Basics - Anfänger-Themen 11
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
T Wie vergleiche ich die Jahre aus der while Schleife die in ( public class) fuer cbx geschrieben sind Java Basics - Anfänger-Themen 5
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
J Erste Schritte .class datei in meine form inkludieren Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben