1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Java Debug output

  • Torinson
  • 12. Oktober 2011 um 08:11
  • Unerledigt
  • Torinson
    4
    Torinson
    Mitglied
    Punkte
    135
    Beiträge
    20
    • 12. Oktober 2011 um 08:11
    • #1

    Hi!

    Ich hab mich mal ein wenig durch google und die Forumssuche geklickt, habe aber nichts in die Richtung gefunden.

    Ich suche also etwas wie (aus C)

    Code
    #ifdef DEBUG
    //do debug output
    #endif

    das einzige, was ich bis jetzt gefunden habe, was irgendwie in die nähe kommt wäre

    Code
    private static final boolean DEBUG = ......;
    
    
    if(DEBUG){//do debug output}

    ich hätte aber gerne eine Möglichkeit, das bei javac mit zu übergeben ala cc -DDEBUG.

    Soweit ich weiß hat java keinen pre-processor, aber wenn ich DEBUG false setze werden die Debugteile wegoptimiert (siehe javap), also denke ich, dass javac da etwas ähnliches tut.

    Weiß jemand von euch etwas zu dem Thema beziehungsweise, kann mir jemand sagen was hier die best practice ist?

    Thanks in advance
    LG
    Tor

  • lewurm
    7
    lewurm
    Mitglied
    Reaktionen
    17
    Punkte
    437
    Beiträge
    81
    • 12. Oktober 2011 um 14:17
    • #2

    fallst du keine Loesung findest (mir ist keine bekannt), kannst du einfach den C-Preprozessor nehmen:

    Code
    lewurm@phenom:/tmp$ cat > lol.java
    #ifdef LOLDEF
    lol
    #else
    rofl
    #endif
    lewurm@phenom:/tmp$ gcc -x c -E -P -DLOLDEF lol.java
    
    
    lol
    lewurm@phenom:/tmp$ gcc -x c -E -P -DASDF lol.java
    
    
    
    
    
    
    rofl
    Alles anzeigen

    lolwoot

  • Torinson
    4
    Torinson
    Mitglied
    Punkte
    135
    Beiträge
    20
    • 12. Oktober 2011 um 14:30
    • #3

    Danke. Wusste nicht, dass das geht.

    Das passt sicher hin. Leider kann ichs für diese Aufgabe nicht verwenden (DS Abgabe und Kontrolle über ANT Skript).
    Es freut mich aber sehr, dass es generell eine so einfache Lösung gibt.

    Das erleichtert es mir schon mal insgesamt.

  • Paulchen
    1
    Paulchen
    Gast
    • 12. Oktober 2011 um 14:41
    • #4
    Zitat von Torinson

    Das passt sicher hin. Leider kann ichs für diese Aufgabe nicht verwenden (DS Abgabe und Kontrolle über ANT Skript).

    In DSLab kommt's ja ohnehin nicht so auf die Performance an.

    Meines Wissens ist's in Java üblich, irgendein Logging-Framework zu verwenden und dann bei Bedarf die Verbosity dieses Frameworks anzupassen. Sollte mit den Java-Bordmitteln im Package java.util.logging eigentlich gehen (oder ist's die Klasse java.util.Logging? Weiß nicht mehr genau).

  • Torinson
    4
    Torinson
    Mitglied
    Punkte
    135
    Beiträge
    20
    • 12. Oktober 2011 um 14:48
    • #5
    Zitat von Paulchen

    In DSLab kommt's ja ohnehin nicht so auf die Performance an.

    Das stimmt.
    Mir geht's darum, dass ich mir sparen möchte die Stacktrace Ausgaben zu löschen, respektive (viel wichtiger) sie dann für die Erweiterung wieder einfügen zu müssen.
    Das mit dem logging aus util hört sich aber nach einem guten Platz für die Suche an.

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 13. Oktober 2011 um 00:34
    • #6

    Wie Paulchen gesagt hat, Java Logging API wäre die normale Lösung. Für den laufenden Betrieb stellst du den Logger einfach ab.

    Dieser Hack mit dem C-Präprozessor würde es schwer machen, den Code mit einer IDE wie Eclipse zu verwenden, die den Code im Hintergrund laufend kompiliert, und die #-Anweisungen ständig als Fehler erkennen und anzeigen würde. Plus es ist sehr un-Java-like. Pfui.

  • Torinson
    4
    Torinson
    Mitglied
    Punkte
    135
    Beiträge
    20
    • 13. Oktober 2011 um 07:06
    • #7
    Zitat von JohnFoo

    Plus es ist sehr un-Java-like. Pfui.

    Das ist Einstellungssache. Ich finds mehr Hui :winking_face:

    Ja, dass mit dem logging wirds wohl werden , obwohl mir der Hack schon viel besser taugt.

    Danke euch allen für die Hilfe.

    LG
    Tor

  • MrMassaker
    12
    MrMassaker
    Mitglied
    Reaktionen
    41
    Punkte
    1.436
    Beiträge
    263
    • 13. Oktober 2011 um 08:21
    • #8

    Ich würde vermuten wenn du eine Konstante definierst a la (pseudocode, hab schon lange nix mehr mit java gemacht) final static boolean logging = false; dass der java compiler so schlau ist und anweisungen der form if (logging){ ... } wegoptimiert. compiler sind intelligenter als man denkt :winking_face:

    möglicherweise ist diese if anweisung in einem logging framework deiner wahl versteckt.

    edit: wenn ich das ausgangsposting gelesen hätte, hätte ich mir dieses posting sparen können. sorry für die redundanz.

    Patient: "Doctor, doctor, my eye hurts when I poke it with a spoon."
    Doctor: "Don't poke it, then."

  • JohnFoo
    20
    JohnFoo
    Mitglied
    Reaktionen
    61
    Punkte
    4.231
    Beiträge
    761
    • 13. Oktober 2011 um 19:41
    • #9
    Zitat von Torinson

    Das ist Einstellungssache. Ich finds mehr Hui :winking_face:

    Geht mehr darum, nicht auf Java einzuprügeln, bis es ausschaut, wie die Sprache, von der man her kommt. Gibt genug furchtbare Java-Programme, die aussehen wie C. Besser die Gepflogenheiten der Sprache kennen lernen und nach denen arbeiten, bis man versteht, warum die so gelöst worden sind, und nicht so, wie man's kennt. Es ist Geschmackssache, aber so Geschmackssache wie in "ich speib aufn Teller und ess es dann auf" :p.

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung