Frage

Ich habe jad seit vielen Jahren verwendet, die meisten von ihnen mit der Jadclipse Plugin zu verdunkeln, die es durchaus brauchbar macht. Vor allem mit dem „Align Code für die Fehlersuche“, die Sie den dekompilierten Code für jede Zeile in einem Stack-Trace sehen können. Sehr schön.

Leider immer mehr Ich habe gesehen, dass die <- falsch ausgerichtet -> Kommentar schleicht in, die meisten wahrscheinlich, weil jad die Klassendatei sein, um erwartet, die eindeutig nicht der Fall für die Java 6 Laufzeitbibliothek ist. Wenn also die Datei zu schreiben, und eine Anweisung sagt: „Dies ist die Leitung 100“ dann 99 leere Zeilen geschrieben werden, und wenn dann die nächste Anweisung sagt: „Das ist für die Linie 10“, dann zurückspulen jad kann dort nicht diesen Ausgang zu setzen, aber nur Drucke aus einem Kommentar, dass dies an der falschen Stelle ist.

Hier ist ein Beispiel für HttpURLConnection:

          protected HttpURLConnection(URL url, Proxy proxy, Handler handler1)
            {
/* <-MISALIGNED-> */ /* 603*/        super(url);
/* <-MISALIGNED-> */ /* 192*/        ps = null;
/* <-MISALIGNED-> */ /* 196*/        errorStream = null;
/* <-MISALIGNED-> */ /* 199*/        setUserCookies = true;
/* <-MISALIGNED-> */ /* 200*/        userCookies = null;
/* <-MISALIGNED-> */ /* 220*/        currentProxyCredentials = null;
/* <-MISALIGNED-> */ /* 221*/        currentServerCredentials = null;
/* <-MISALIGNED-> */ /* 222*/        needToCheck = true;
/* <-MISALIGNED-> */ /* 223*/        doingNTLM2ndStage = false;
/* <-MISALIGNED-> */ /* 224*/        doingNTLMp2ndStage = false;
/* <-MISALIGNED-> */ /* 226*/        tryTransparentNTLMServer = NTLMAuthentication.supportsTransparentAuth();
/* <-MISALIGNED-> */ /* 227*/        tryTransparentNTLMProxy = NTLMAuthentication.supportsTransparentAuth();
/

Die Frage ist nun, ob es eine andere Decompiler ist die eine genauere Ausgabe linewise erzeugt. Die tatsächliche Dekompilierungsprozeß braucht nicht extrem groß oder etwas zu sein, aber ich mag es wirklich zu sein, wo die Java-Stack-Trace-Ansicht, es erwartet zu sein. Wenn es funktioniert gut mit Jadclipse, das ist noch besser.

War es hilfreich?

Lösung

Das Problem mit der Formatierung für Debug kommt von jadclipse und nicht von jad. jad nicht diese Fähigkeit haben.

Die jadclipse Plug-in hat einen kleinen Codeabschnitt in einem Klassennamen DebugAlignWriter die tun dies:

if((align = getAlignTarget(aLine)) != -1)
{
   if(align < curLine)
   {
      if(curLine != 0)
      {
          out.write(10);
      }
      out.write("/* <-MISALIGNED-> */ ");
      out.write(aLine);
      curLine++;
   }
   else if(align == curLine)
   {
      out.write(aLine);
   }
   else
   {
      for(; align > curLine; curLine++)
      {
          out.write(10);
      }
      out.write(aLine);
   }

}

Im Prinzip versucht er, die Ausgabe von jad auszurichten.

So die Ursache ist, dass jad erzeugt eine Ausgabe, die in Lesereihenfolge nicht notwendigerweise ist. Leider kann ich nicht Licht auf, warum jad auf diese Weise wirkt. Nach jad Hilfe gibt es keine Möglichkeit, die Reihenfolge der zu steuern.

bemerkte ich in jadclipse, dass, wenn Sie JadClipse-> Formatierungs-> Stecken Sie nicht eine neue Zeile vor dem Öffnen Klammer - es wird reduzieren die Anzahl der /* <-MISALIGNED-> */ Segmente aufgrund die Art, wie es funktioniert.

Auch wenn Sie überprüften die Ausgabefelder vor Methoden Option wird die Anzahl der /* <-MISALIGNED-> */ Segmente erhöhen können, es so vermeiden.

Andere Tipps

JD-Eclipse- eine sehr gute Decompiler ist das auch 7-Funktionen Java-Griffe.

Es ist nicht ein „Align Code für die Fehlersuche“ haben Funktion noch nicht, aber ich fügte mich ein. Ich habe es im letzten Jahr verwendet wird.

Ich behandle auch die Fälle, wenn die Leitung bewegt werden muss zurück; Ich markieren Sie es noch als falsch ausgerichtete den Sonderfall zu signalisieren, aber zumindest ist es auf der rechten Linie platziert.

Wenn jemand will es einen Versuch geben kann Herunterladen von sein hier . Weitere Details im Inneren README.txt

Ich benutze jad mit so wenig wie möglich Formatierung und dann verwende ich Eclipse-Format-Befehl, wie kann ich es meine bevorzugte Art von den Präferenzen machen lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top