Что было бы более точным декомпилером, чем JAD для Eclipse, чтобы избавиться от <-Misaligned ->?

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

Вопрос

Я использовал JAD в течение многих лет, большинство из них с плагином JADCLIPSE к Eclipse, который делает его вполне полезным. Особенно с «Сокрушенным кодом для отладки», который позволяет видеть декомпилированного кода для любой строки в трассировке стека. Очень хорошо.

К сожалению, я видел все больше и больше, что <- mislignged -> комментарий пробирается, что, скорее всего, потому что JAD ожидает, что класс предотвращает, что ясно не является случай для библиотеки времени выполнения Java 6. Следовательно, при написании файла, и инструкция говорит: «Это строка 100», то написаны 99 пустых строк, и если затем следующая команда говорит: «Это для строки 10», то JAD не может перемотать, чтобы положить этот вывод там, но просто печатает комментарий, что это не в том месте.

Вот пример для 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();
/

Вопрос сейчас, если есть еще один декомпилятор, который генерирует более точный вывод. Фактическое декомпиляция не должна быть чрезвычайно великой или что-то в чем-то, но мне очень нравится, когда он должен быть там, где представление трассировки стека Java ожидает, что он должен быть. Если он хорошо работает с JADCLIPSE, это еще лучше.

Это было полезно?

Решение

Проблема с форматированием для отладки приходит от jadclipse и не из jad. jad не имеет этой способности.

То jadclipse Плагин имеет небольшой код код в именах классов DebugAlignWriter который делает это:

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

}

В основном он пытается выровнять вывод из jad.

Так что корневая причина в том, что jad производит вывод, который не обязательно в порядке чтения. К сожалению, я не могу пролить свет на почему jad действует таким образом. Согласно с jad Помощь нет способа контролировать заказ.

Я заметил в jadclipse что если вы установите JADCLIPSE-> Форматирование-> Не вставляйте новую строку перед открытием скобки - Так и будет уменьшать номер /* <-MISALIGNED-> */ Сегменты из-за природы того, как это работает.

Кроме того, если вы проверили Выходные поля до методов вариант может увеличить количество /* <-MISALIGNED-> */ Сегменты, так что избегайте этого.

Другие советы

JD-Eclipse. Это очень хороший декомпилятор, который также обрабатывает функции Java 7.

Еще не имеет «выровнять код для отладки», но я добавил один сам. Я использовал его за последний год.

Я также справляюсь с случаями, когда линия должна быть перемещена назад; Я до сих пор отмечаю это как неправильный, чтобы сигнализировать специальный случай, но, по крайней мере, он размещен на правой линии.

Если кто-то хочет дать ему попробовать, это можно скачать с здесь. Отказ Подробнее Внутри readme.txt

Я использую JAD с максимально возможным форматированием, а затем я использую команду формата Eclipse, так как я могу сделать его соответствовать моим предпочтительным стилям из предпочтений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top