ما الذي سيكون أكثر دقة من jad for Eclipse للتخلص من < -misaligned ->؟

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

سؤال

لقد استخدمت JAD لسنوات عديدة ، معظمها مع المكون الإضافي Jadclipse إلى Eclipse مما يجعله قابلاً للاستخدام. خاصة مع "رمز المحاذاة لتصحيح الأخطاء" الذي يتيح لك رؤية الكود المقطوع لأي سطر في تتبع المكدس. لطيف جدًا.

لسوء الحظ ، رأيت أكثر فأكثر أن التعليقات < - غير متصلة -> يتسلل ، وهو على الأرجح لأن Jad يتوقع أن يكون الفصل الدراسي هو أمر ليس هو الحال بوضوح لمكتبة Java 6 Runtime. وبالتالي عند كتابة الملف ، وتقول تعليمات "هذا هو السطر 100" ثم يتم كتابة 99 خطًا فارغًا ، وإذا كانت التعليمات التالية تقول "هذا هو السطر 10" ، فلا يمكن أن يرجع جاد لوضع هذا الإخراج هناك ، ولكن فقط يطبع تعليق على أن هذا في المكان الخطأ.

فيما يلي مثال على 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();
/

السؤال هو الآن إذا كان هناك decompiler آخر يولد إخراج أكثر دقة. لا تحتاج إلى أن تكون إزالة الإلغاء الفعلي رائعة للغاية أو أي شيء ، لكني أحب ذلك حقًا أن يكون مكان تتبع Java Stack. إذا كان يعمل بشكل جيد مع 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 هو decompiler جيد جدا الذي يتولى أيضا ميزات جافا 7.

لا يحتوي على ميزة "محاذاة رمز لتصحيح الأخطاء" حتى الآن ، لكنني أضفت بنفسي. لقد كنت أستخدمه للعام الماضي.

أنا أيضًا أتعامل مع الحالات التي يجب أن يتم فيها العودة إلى الوراء ؛ ما زلت علامة على أنه غير محدد للإشارة إلى الحالة الخاصة ولكن على الأقل يتم وضعها على الخط الأيمن.

إذا كان أي شخص يريد تجربته ، فيمكن تنزيله من هنا. مزيد من التفاصيل داخل readMe.txt

أستخدم JAD بأقل قدر ممكن من التنسيق ، ثم أستخدم أمر تنسيق Eclipse ، حيث يمكنني أن أجعله يتطابق مع نمطي المفضل من التفضيلات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top