2009-12-15 20 views
36

Zastanawiam się, czy istnieją jakieś rozwiązania dla Eclipse IDE do debugowania kodu Java, dla którego nie mam źródła, tj. Do debugowania dynamicznie dekompilowanego kodu, przechodzenia przez niego itp.? Próbowałem użyć JD-Eclipse, JadClipse, a te wtyczki działają świetnie, jeśli chcę przejrzeć niektóre pliki klas, ale podczas debugowania otrzymuję komunikat "Źródło nie znaleziono". - jak mogę "dołączyć" te wtyczki do "źródła"?Jak debugować skompilowany kod Java w Eclipse

Moja okolica:

  • Eclipse 3.5
  • Windows XP (ale patrzę na pole karne rozwiązania platformy, jeśli to możliwe)

Dziękuję.

+0

Jeśli dekompilowana nie może skompilować go z powrotem i pójść o -g debugowanie jak byś o w kodzie źródłowym. –

+0

Czy ponowna kompilacja dekompilowanego źródła zakończy się dokładnie tymi samymi plikami klas? Nie sądzę. Ale jeśli OP może zastąpić pliki klas własnymi, to przypuszczam, że jest to wykonalne. –

+0

Zauważ, że IntelliJ 14+ ma wbudowany dekompilator. –

Odpowiedz

13

mam dobre doświadczenia z Jadclipse - http://jadclipse.sourceforge.net/wiki/index.php/Main_Page - tam jest miejsce zmiana w http://jadclipse.sf.net/update

dla najlepszych rezultatów stosować jad i skonfigurować go do listy numerów wierszy jako komentarze, które umożliwią wyjście gdzie kod znajduje się we właściwej linii. Jest to najlepsze rozwiązanie w przypadku sesji debugowania.

Następnie ustaw go jako widok domyślny dla klas. Szczegółowe informacje można znaleźć w dokumentacji. To działa dobrze dla mnie.

+0

Cóż, to podejście jest najbardziej odpowiednie - wydaje się działać (dekompiluje klasy Java w locie, pokazuje źródło podczas debugowania). Wygląda na to, że byłem na dobrej drodze, ale nie udało mi się ponownie uruchomić Eclipse kilka razy. Byłoby idealnie, gdyby wszystkie linie dekompilowanego pliku pasowały, ponieważ teraz dostaję manny MISALIGNED. – NSPKUWCExi2pr8wVoGNk

+0

Zgadzam się, ale jad nie jest open source i autor najwyraźniej porzucił go. Mam nadzieję, że nowe dekompilatory obsługiwane przez jadclipse będą w końcu jeszcze lepsze niż jad. –

+0

Niezarejestrowany jest ze względu na sposób, w jaki jad tworzy dekompilowane źródło. Uważam, że pisze on serialnie i nie może poruszać się w tę iz powrotem, aby poprawić sytuację. –

2

Dekompiluj wszystkie klasy, umieść wszystkie pliki Java uporządkowane we właściwej hierarchii (katalog dla pakietu itd.), A następnie dodaj je jako źródło oryginalnego słoika, klikając prawym przyciskiem plik jar -> Załącznik źródłowy Java - > Folder zewnętrzny.

Można również mieć je w folderze w projekcie (kliknij na Workspace w tym przypadku)

+0

Który dekompilator poleciłbyś? –

+0

Nie robiłem ostatnio dekompilacji (przewaga open source ...), ale pamiętam, że JAD i JODE dają dobre wyniki. Zobacz więcej na http://stackoverflow.com/questions/31353/ i http://stackoverflow.com/questions/1384619/ –

+0

Tak, rozważa to podejście, ale jeśli istnieje wiele bibliotek ten staje się zbyt irytujący, więc Szukam "drogi automatycznej" bez żadnych kosztów ogólnych. – NSPKUWCExi2pr8wVoGNk

3

Wtyczka ta powinna być nadzieją na pomoc. JD-Eclipse

w Eclipse Open Window -> Preferencje -> Ogólne -> Edycja -> Skojarzenia plików select * .class plik typu skojarzyć go z JD-Eclipse ustawić go do domyślnego

Powodzenia

+3

To nie zadziałało w przypadku debugowania, dla mnie. – NSPKUWCExi2pr8wVoGNk

+0

To nie działa –

15

Mam ten sam problem. Obecnie żadne dekompilatory nie są wydajne do debugowania skompilowanego kodu Java. Pracuję nad JD-Eclipse. W ciągu najbliższych 3 do 6 miesięcy układ JD-Eclipse powinien być naprawdę ulepszony. Zaczniemy debugować klasy bez źródeł i rozwiązać niektóre trudne problemy.

+0

Fajne :-) Daj nam znać –

+0

@Emmanuel Dupuy: jakikolwiek postęp w "klasach debugowania bez źródeł"? – rafalmag

+1

@rafalmag Algorytm ponownego ustawiania jest gotowy. Możesz przetestować go tutaj: http://java.decompiler.free.fr/?q=preview. Jego integracja z JD-Eclipse zajmie kilka miesięcy. Można powiedzieć, że będzie gotowy w grudniu. Obecnie JD-można używać Eclipse + rozszerzenie Alex Kosinsky: http://sourceforge.net/projects/realignmentjd –

3

Można użyć JD-GUI do dekompilacji plików jar i zapisania całej partii w źródłowym pliku zip, który następnie może zostać dodany do listy wyszukiwania źródłowego (poprzez Konfiguruj ścieżkę kompilacji).

Problem z JD-GUI jest to, że numery linii są na zewnątrz co sprawia, że ​​debugowanie bardzo trudne, więc trzeba

  1. wyodrębnić pliki źródłowe z decompiled źródłowego pliku zip
  2. Uruchom skrypt znaleziony w https://bushlife.com.au/groups/python/wiki/7539a/Adjust_line_numbers_in_file.html
  3. zip wygenerowany źródło kopii zapasowej
  4. dodać go jako ścieżkę źródłowego związanego z plikiem java - używając Configure Build Path po kliknięciu prawym przyciskiem myszy na plik jar w projekcie java.
+0

To pierwsza wzmianka o rozwiązaniu dla numerów linii, które widziałem! Dzięki. Niestety strona główna jest wyłączona! – sandos

+0

Właśnie sprawdziłem stronę. Jeśli nadal masz problemy, możesz wysłać szczegółowe informacje do pająka na stronie. Przerzuci cały problem. – sweetfa

+0

Udało mi się pobrać i korzystać ze skryptu, bardzo miło. To denerwujące manipulowanie niepasującymi laskami, ale można je obejść. – sandos

6

Fragment wywołania dla wtyczki hosta JD-Eclipse. Ta wtyczka do Eclipse sprawia, że ​​dekompilowane numery linii kodu są właściwie odpowiednie do numerów linii z pliku klasy java. W rezultacie staje się możliwe debugowanie bez kodu źródłowego. https://sourceforge.net/projects/realignmentjd/

2

Rozwiązanie że pracował dla mnie jest za pomocą JD-Eclipse po zastosowaniu patcha: http://java.decompiler.free.fr/?q=node/464

Jest przedłużeniem JD-zaćmienie który realigns kod po dekompilacji.

Gdy debugowanie z Eclipse po prostu trzeba mieć pliki jar w ścieżce klasy i to jest to! Nie ma potrzeby, aby dekompilacji cały słoik, wyrównać lub cokolwiek ... Tylko debugowania i być szczęśliwym :-)

Oto jak to zrobić: http://gauchoacomecable.wordpress.com/2011/10/14/eclipse-debug-java-without-source-code-jd-eclipse-and-realignment/

0

Mam zwiększyło „reorientacji JD Eclipse” wtyczka prawidłowo wyrównać teksty stałe i pól i opublikował go wraz z JD Eclipse na własnej witryny aktualizacji: http://mchr3k-eclipse.appspot.com/

szczegółów na temat moich zmian: http://mchr3k-coding.blogspot.co.uk/2012/07/realignment-for-jd-eclipse.html

+0

Użyłeś tej samej łaty co [inny projekt] (http://gauchoacomecable.wordpress.com/2011/10/14/eclipse-debug-java-without-source-code-jd-eclipse-and-realignment/) ? Szkoda, że ​​ta funkcja nie poszła do mistrza kodu, nie będziemy wtedy mieli dwóch widelców kodu. –

+0

Nie. Zgodnie z http://mchr3k.github.com/jdeclipse-realign/ Rozwidłem inny projekt. – mchr

Powiązane problemy