Quel serait un décompilateur plus précis que jad pour Eclipse pour se débarrasser de <-MISALIGNED ->?

StackOverflow https://stackoverflow.com/questions/3684539

Question

Je l'ai utilisé jad depuis de nombreuses années, la plupart de ceux-ci avec le plugin jadclipse à éclipser ce qui le rend tout à fait utilisable. Surtout avec le « code Aligner pour le débogage » qui vous permet de voir le code décompilé pour toute ligne dans une trace de la pile. Très agréable.

Malheureusement, je l'ai vu de plus en plus que le <- désaligné -> commentaire se faufile dans, ce qui est très probablement parce que jad prévoit que la ClassFile soit pour ce qui est manifestement le cas pour la bibliothèque d'exécution Java 6. Par conséquent, lorsque l'écriture du fichier, et une instruction dit « ceci est la ligne 100 » alors 99 lignes vides sont écrites, et si alors l'instruction suivante dit « ceci est pour la ligne 10 », alors jad ne peut pas revenir en arrière pour mettre cette sortie là-bas, mais seulement des impressions un commentaire que ce soit au mauvais endroit.

Voici un exemple pour 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();
/

La question est maintenant s'il y a un autre decompiler qui génère linewise de sortie plus précise. La décompilation réelle n'a pas besoin d'être extrêmement grande ou quoi que ce soit, mais je l'aime vraiment d'être là où la vue Java Stack Trace attend que ce soit. Si cela fonctionne bien avec jadclipse, thats encore mieux.

Était-ce utile?

La solution

Le problème avec le formatage pour le débogage provient de jadclipse et non de jad. jad n'a pas cette capacité.

Le jadclipse plug-in a une petite section de code dans un nom de classe DebugAlignWriter qui fait cela:

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);
   }

}

Fondamentalement, il tente d'aligner la sortie du jad.

Alors la cause fondamentale est que jad produit une sortie qui ne sont pas nécessairement dans l'ordre de lecture. Malheureusement, je ne peux pas faire la lumière sur les raisons jad agit de cette façon. Selon aide jad il n'y a aucun moyen de contrôler l'ordre.

J'ai remarqué dans jadclipse que si vous définissez JadClipse-> Formatting-> Ne pas insérer un saut de ligne avant accolade d'ouverture - il sera réduire le nombre de segments de /* <-MISALIGNED-> */ en raison à la nature de la façon dont cela fonctionne.

En outre, si vous avez coché la champs de sortie avant les méthodes il peut augmenter le nombre de segments de /* <-MISALIGNED-> */, donc l'éviter.

Autres conseils

JD-Eclipse est un très bon décompilateur qui a également 7 caractéristiques de poignées.

Il ne dispose pas d'un « code Aligner pour le débogage » fonctionnalité encore mais j'ajouté moi-même. Je l'ai utilisé pour la dernière année.

Je également en charge les cas où la ligne doit être déplacé en arrière; Je marque encore comme désaligné pour signaler le cas particulier, mais au moins il est placé sur la ligne droite.

Si quelqu'un veut essayer il peut être téléchargé à partir de ici . Plus de détails à l'intérieur README.txt

J'utilise jad avec aussi peu de mise en forme que possible, puis-je utiliser la commande format éclipse, comme je peux le faire correspondre à mon style préféré des préférences.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top