Lo que sería una decompilador más precisa que la JAD para Eclipse para deshacerse de <-MISALIGNED ->?

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

Pregunta

He utilizado JAD durante muchos años, la mayoría de estos con el JadClipse plugin para Eclipse que hace que sea bastante usable. Sobre todo con el "código Alinear para depurar", que le permite ver el código descompilada para cualquier línea en un seguimiento de la pila. Muy agradable.

Por desgracia he visto cada vez más que la <- DESALINEADA -> cuela comentario en, lo que es más probable debido a jad espera que el archivo de clase que sea el fin que claramente no es el caso de la biblioteca de tiempo de ejecución Java 6. De ahí que al escribir el archivo, y una instrucción dice "esta es la línea 100" a continuación se escriben de 99 líneas vacías, y si a continuación, la siguiente instrucción dice "esto es para la línea 10", entonces jad no puede retroceder a poner que la producción allí, pero no se imprime sólo un comentario de que esto está en el lugar equivocado.

Este es un ejemplo para 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 pregunta es ahora si hay otro decompilador que genera linewise de salida más preciso. La descompilación real no tiene por qué ser muy grande ni nada, pero me gusta que sea donde la vista Seguimiento de la pila de Java espera que sea. Si funciona bien con JadClipse, eso es incluso mejor.

¿Fue útil?

Solución

El problema con el formato de depuración viene de jadclipse y no de jad. jad no tiene esa capacidad.

El jadclipse plug-in tiene una sección de código pequeño en una DebugAlignWriter nombres de clase que hace esto:

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

}

Básicamente se trata de alinear la salida de jad.

Así que la causa fundamental es que jad produce una salida que no está necesariamente en el orden de lectura. Lamentablemente no puedo arrojar luz sobre por qué jad actúa de esa manera. De acuerdo con la ayuda jad no hay manera de controlar el orden.

Me di cuenta en jadclipse que si establece JadClipse-> Formatting-> No inserte un salto de línea antes de llave de apertura - es reducir el número de segmentos debido /* <-MISALIGNED-> */ a la naturaleza de cómo funciona.

Además, si marcó la Los campos de salida métodos antes de que pueda aumentar el número de segmentos /* <-MISALIGNED-> */, por lo evite.

Otros consejos

JD-Eclipse es una muy buena decompilador que también maneja Java 7 funciones.

No tiene un "código de Align para depurar" característica todavía, pero añadió una yo. He estado usando durante el último año.

También manejar los casos en los que la línea tiene que ser movido hacia atrás; Todavía marcarla como DESALINEADA para señalar el caso especial, pero por lo menos es colocada en la línea correcta.

Si alguien quiere darle una oportunidad que se puede descargar desde aquí . Más detalles en el interior LEEME.txt

Yo uso jad con tan poco como sea posible formatear y luego utilizo el comando format del eclipse, como puedo hacer que coincida con mi estilo preferido de las preferencias.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top