Eclipseが<-misaligned->を取り除くためのJadよりも正確なdecompilerは何でしょうか?

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

質問

私は長年Jadを使用してきましたが、これらのほとんどはJadclipseプラグインをEclipseに使用していました。特に、スタックトレース内の任意の行の逆コンパイルコードを見ることができる「デバッグのアラインコード」を使用します。非常に素晴らしい。

残念ながら、私は<-misaligned->コメントが忍び寄ることをますます見てきました。これは、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 Stack Traceビューが期待する場所になるのが本当に好きです。 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の機能を処理する非常に優れた逆コンパイラです。

「デバッグのためのAlign Code」機能はまだありませんが、自分で追加しました。私は昨年それを使用しています。

また、ラインを戻す必要がある場合も処理します。私はまだ特別なケースを合図するためにずれているとマークしますが、少なくともそれは正しい線に配置されています。

誰かが試してみたい場合はからダウンロードできます ここ. 。詳細については、readme.txt

できるだけ少ないフォーマットでJADを使用してから、Eclipseのフォーマットコマンドを使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top