2015-09-18 12 views
6

Sto usando Intellij Idea 14 lavorando con un grande progetto java in cui viene compilato molto codice e senza fonti.Come decompilare con i numeri di riga corretti usando il fernflower?

Per quanto ne so Idea non può fare una ricerca in codice compilato (come eclipse fa), ma può decompilare singolo file utilizzando build-in fernflower e questo dà anche la possibilità di eseguire il debug tramite codice compilato.

C'è un modo per decompilare tutto il codice compilato nello stesso modo in cui l'Idea fa e collegarlo al progetto in modo che fosse possibile cercare tra "Progetto e Libs" senza perdere la funzione di debug nelle fonti decompilate?

Ho provato a utilizzare Bytecodeviewer con diverse opzioni fernflower, ma il risultato è stato che il debug è stato interrotto (ha mostrato linee errate) dopo aver collegato le fonti decompilate.

+0

Non penso che nessun decompilatore possa pervertire i numeri di linea originali. Sarei stupito se riesci a eseguire correttamente il debug con le fonti decompilate in Eclipse. – Amila

+1

non sono sicuro di eclissi, ma Intellij Idea fa questa magia. http://blog.jetbrains.com/idea/2015/02/debug-decompiled-code-with-intellij-idea-14-1/ – hahn

+0

In realtà è piuttosto interessante, grazie a @hahn. – Amila

risposta

0

ok, come non ci sono notizie per quanto riguarda questo, ho creato un piccolo plugin che decompila il file jar con il codice compilato per nuovo file *-sources.jar utilizzando build-in Intellijfernflower decompilatore e si attacca fonti per progetto. chiunque sia interessato, può dare un'occhiata a decompile and attach plugin nella JetBrains plug-repository

Aggiornamento rispondere alla mia domanda su numeri di riga nel codice decompiled utilizzando fernflower. Ho trovato il flag 'decompiler.use.line.table' nel Intellij di fernflower che conserva i numeri di riga.

+0

Dove si trova questa bandiera? in quale file? – KilleKat

+1

@KilleKat questo flag è stato rinominato. Se apri Intellij's Registry dovresti riuscire a trovare le chiavi contenenti la parola "decompilatore". Nell'ultima IDEA questo è chiamato come "decompiler.dump.original.lines" e "decompiler.use.line.mapping" – hahn

3

ho scoperto che su OSX è possibile modificare questa impostazione nel seguente file:

~/Library/Preferences/IntelliJIdea2016.1/opzioni/Options.xml

aggiungere le seguenti proprietà :

<property name="decompiler.use.line.mapping" value="true" /> 
    <property name="decompiler.dump.original.lines" value="true" /> 
+2

o tramite Cmd + Shift + A -> Registro in Intellij – hahn