2015-09-18 18 views
6

Używam Intellij Idea 14 pracy z dużym projektem java, w którym wiele kodu jest skompilowanych i źródeł w/o.Jak dekompilować poprawne numery linii za pomocą fernflower?

O ile wiem Idea nie można dokonać wyszukiwania w skompilowanego kodu (jak eclipse robi), ale może dekompilować pojedynczy plik, używając wbudowany fernflower a to daje również możliwość debugowania poprzez kod skompilowany.

Czy istnieje sposób na dekompilację całego skompilowanego kodu na raz w ten sam sposób, w jaki działa Idea i dołączenie go do projektu, aby możliwe było przeszukiwanie "projektów i bibliotek" bez utraty funkcji debugowania w źródłach zdekompilowanych?

Próbowałem używać Bytecodeviewer z różnymi opcjami , ale wynikiem było zerwanie debugowania (pokazało błędne linie) po dołączeniu zdekompilowanych źródeł.

+0

Nie sądzę, że jakikolwiek dekompilator może perwersyjne oryginalne numery linii. Byłbym zdumiony, jeśli potrafisz poprawnie debugować za pomocą dekompilowanych źródeł w Eclipse. – Amila

+1

nie jestem pewien, czy Eclipse, ale Intellij Idea robi to magia. http://blog.jetbrains.com/idea/2015/02/debug-decompiled-code-with-intellij-idea-14-1/ – hahn

+0

To naprawdę całkiem interesujące, dzięki @hahn. – Amila

Odpowiedz

0

ok, jak nie ma wieści odnośnie tego, jakie stworzył małą wtyczkę, która decompiles plik jar z skompilowanego kodu do pliku przy użyciu nowego *-sources.jar wbudowany Intellijfernflower dekompilator źródeł i przywiązuje do projektu. Każdy zainteresowany może zapoznać się decompile and attach wtyczki w JetBrains plugin repozytorium

Aktualizacja odpowiedzi na moje pytanie o numery linii w kodzie dekompilowana użyciu fernflower. Znalazłem flagę "decompiler.use.line.table" w Intellij 's fernflower, która zachowuje numery linii.

+0

Gdzie ta flaga? w którym pliku? – KilleKat

+1

@KilleKat ta flaga została zmieniona. Jeśli otworzysz rejestr Intellij, powinieneś znaleźć klucze zawierające słowo "decompiler". W najnowszym IDEA jest to nazywane "decompiler.dump.original.lines" i "decompiler.use.line.mapping" – hahn

3

Okazało się, że na OSX można zmienić to ustawienie w następujący plik:

~/Library/Preferences/IntelliJIdea2016.1/opcje/options.xml

dodać następujące właściwości :

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

lub przez Cmd + Shift + A -> Rejestr w Intellij – hahn

Powiązane problemy