Jaki jest najłatwiejszy sposób debugowania kodu Scala zarządzanego przez sbt przy użyciu wbudowanego debuggera IntelliJ? Dokumentacja z „RunningSbt” ze strony Google Code firmy sbt zawiera listę poleceń do uruchamiania głównej klasy projektu lub testów, ale wydaje się, że nie ma poleceń do debugowania.
Pytanie uzupełniające: jaki jest najłatwiejszy sposób dołączenia debugera IntelliJ do Jetty przy użyciu polecenia jetty-run sbt?
scala
intellij-idea
jetty
sbt
Mateusz
źródło
źródło
Odpowiedzi:
Do zwykłego debugowania w IntelliJ możesz użyć konfiguracji uruchamiania / debugowania aplikacji w zwykły sposób, niezależnie od tego, czy używasz sbt do kompilowania kodu.
Aby połączyć się z aplikacją działającą w Jetty, musisz utworzyć konfigurację zdalnego debugowania. Kiedy to zrobisz, IntelliJ poda zestaw argumentów wiersza poleceń do uruchamiania zdalnej maszyny JVM - coś w rodzaju
Uruchom sbt z tymi argumentami, a następnie wykonaj
jetty-run
. Na koniec uruchom konfigurację zdalnego debugowania w IntelliJ. Ten wątek może być przydatny.źródło
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
jetty-run
polecenie w wierszu polecenia sbt.sbt -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
?sbt -jvm-debug 5005
.W
-jvm-debug
oficjalnych pakietach SBT dla komputerów Mac, Linux i Windows znajduje się bardzo wygodna flaga . Możesz użyć flagi, aby określić port debugowania:Pod okładkami uruchamia to JVM dla SBT z typową inkantacją dotyczącą pełnego debugowania:
Możesz teraz uruchomić swój kod normalnie, na przykład za pomocą
run
polecenia sbt .Konfigurowanie IntelliJ do łączenia się z uruchomionym kodem ...
Teraz podłącz IntelliJ do uruchomionego procesu przy użyciu konfiguracji zdalnego debugowania . Należy zauważyć, że górne 3 pola w tej formie, a przerażające, to tylko, aby skopiować tekst z od, raczej niż do (oni dając gadatliwy debugowania inkantację określony powyżej, który
-jvm-debug
już zajmuje się dla ciebie) - jedyna konfiguracja możesz zmienić jest wSettings
sekcji w połowie drogi:źródło
-jvm-debug
parametr i przesłać to jako żądanie ściągnięcia - masz duże szanse na skorzystanie z korzyści dla wszystkich, którzy znajdują się na tej samej platformie.Ja też miałem z tym problem, więc ryzykując nadmierną szczegółowością, oto co zrobiłem:
USTAWIAĆ
Utwórz konfigurację uruchamiania dla sbt jetty-run
Utwórz konfigurację debugowania do zdalnego debugowania
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
(pamiętaj, aby kliknąć OK, aby faktycznie utworzyć konfigurację)Skonfiguruj wtyczkę SBT, aby uruchomić powyższe opcje maszyny wirtualnej
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
w polu Parametry maszyny wirtualnej po tych, które już tam sąDEBUGOWANIE
źródło
sbt -jvm-debug 5005 console
, a następnie ustawiam punkt przerwania w intelllJ Idea, uruchamiam debug.sbt -jvm-debug 5005 console
nie działa dla mnie, alesbt -jvm-debug 5005
tak.Ten działa dla mnie za każdym razem i jedyną rzeczą, którą musisz skonfigurować, jest zdalne debugowanie w IntelliJ; Uruchamiam SBT z parametrami JVM z terminala w IntelliJ:
Następnie mogę rozpocząć zdalne debugowanie na localhost: 5005
źródło
Dodaję tutaj inną odpowiedź, ponieważ znalazłem to pytanie podczas wyszukiwania powiązanego problemu: Debugowanie klas testowych za pomocą punktów przerwania.
Używam ScalaTest i zwykle uruchamiam pakiet za pomocą polecenia „tylko test” sbt. Teraz, gdy chcę skorzystać z interaktywnego debuggera, mogę wykonać następujące czynności:
Utwórz nową konfigurację uruchamiania / debugowania typu „ScalaTest”, wpisz główną nazwę „Test Class:” i wybierz opcję „Before launch: Run SBT Action„ test-compile ””. To wszystko, możesz teraz umieścić punkty przerwania w źródłach testowych i uruchomić tę konfigurację.
źródło
Żadna z tych odpowiedzi ani podanych linków nie zadziałała dla mnie, więc kiedy to zrozumiałem, pomyślałem, że podzielę się ...
w tym zrozumienie tła, którego nie miałem, kiedy zaczynałem ...
Jest to oparte głównie na instrukcjach tutaj z dodatkowym wyjaśnieniem, które przeprowadziło mnie przez to.
Moje środowisko: Scala 2.10.2, SBT 0.13 i IntelliJ 13.1
Tło:
Co to jest debugowanie?
Co to jest zdalne debugowanie?
W odniesieniu do powyższego łącza przydatne są następujące wyjaśnienia / modyfikacje:
źródło
Miałem problemy z debugowaniem również w systemie Windows z aplikacją Spray-can / Akka / Scala zbudowaną za pośrednictwem SBT przy użyciu Intellij. Łącząc różne sugestie, najprostszym podejściem było dla mnie:
Upewnij się, że masz sbt.Revolver w swoim pliku projektu / plugsin.sbt np
addSbtPlugin ("io.spray"% "sbt-revolver"% "0.7.1")
Ustaw opcje java w pliku build.sbt:
javaOptions: = Seq ("- Xdebug", "-Xrunjdwp: transport = dt_socket, server = y, suspend = y, address = 5005")
W szczególności użyj opcji suspend = y. Spowoduje to wstrzymanie aplikacji do momentu podłączenia zdalnego debugera z Intellij
Skonfiguruj konfigurację debugera w Intellij za pomocą menu Uruchom / Edytuj konfiguracje. Naciśnij przycisk +, wybierz opcję „Remote”. Upewnij się, że wpisy są zgodne z powyższymi opcjami java, w szczególności z adresem portu 5005. Nadaj konfiguracji nazwę taką jak „Spray”.
Z konsoli SBT użyj polecenia ponownego uruchomienia. Na wyjściu sprzężenia zwrotnego powinien być widoczny adres portu 5005.
W Intellij ustaw swoje punkty przerwania.
W Intellij wybierz 'Spray' Run \ Debug. Powinno to połączyć się z serwerem internetowym puszki sprayu. Powinieneś być w stanie zobaczyć wiele wątków w oknie debugowania.
Uważaj, niektóre z dyrektyw Get w Spray wydają się być wykonywane przy uruchomieniu, ale nie podczas wywoływania witryny wielokrotnie.
źródło
Używając Scala 2.10 i SBT 0.12, działało to w następujący sposób: http://tuliodomingos.blogspot.com.es/2014/01/scala-remote-debugging-in-sbts-jetty.html
źródło
Co jest warte, Windows folk, edytuj
%SBT_HOME%\bin\sbt.bat
i znajdź następujące wiersze kodu:następnie zamień je na ten kod:
Najlepsze, co mogę zrobić, aby uzyskać takie samo zachowanie,
-jvm-debug
gdy widzę je w programie uruchamiającym skrypt BashNB. Nie sądzę, aby
%SBT_HOME%
faktycznie istniał poza tym skryptem, chyba że stworzyłeś je bezpośrednio w swoim środowisku, ale i tak rozumiesz: Dźródło
Plik-> Ustawienia-> Inne ustawienia-> Parametry maszyny wirtualnej SBT -Xmx512M -XX: MaxPermSize = 256M -Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = n, address = 5005
Uruchom-> Edytuj konfiguracje Naciśnij +, a następnie wybierz zdalne Naciśnij Zastosuj
Teraz w konsoli SBT (uruchomionej w środku przez intelliJ) po wykonaniu polecenia 'run' zobaczysz "Nasłuchiwanie transportu dt_socket pod adresem: 5005"
Teraz naciśnij Run-> Debug. Zobaczysz aktywne menu debugowania poniżej. Posiada dwie zakładki Debugger i Console.
Użyj F7, aby przejść od następnej linii do następnej
Wybrałem zawieszenie, aby być n. Ponieważ było y, kiedy uruchomiłem polecenie uruchomienia, utknęło
źródło
Spróbuj tego
źródło
Mam też ten sam problem, lubię dzielić się tym, jak go rozwiązałem. Przy okazji używam Ubuntu 14.04 i IntelliJ 15.
W Ustawienia -> SBT -> Wklejono poniższy wiersz w polu tekstowym Parametry maszyny wirtualnej:
-XX: MaxPermSize = 384M -Xdebug -Xrunjdwp: transport = dt_socket, serwer = y, suspend = n, adres = 5005
Otworzyłem Termilal w IntelliJ i uruchom:
sbt -jvm-debug 5005
Uwaga: w terminalu powinna pojawić się ta linia: „Nasłuchiwanie transportu dt_socket pod adresem: 5005”
Edytuj konfiguracje -> Kliknij + -> Wybierz „Zdalne”
Wybierz DebugMyModule w
Edit Configurations
polu listy i kliknij Debuguj .Uwaga: powinien być otwarty widok debugowania, aw konsoli debugowania powinien być widoczny komunikat „Połączono z docelową maszyną wirtualną, adres:,
'127.0.0.1:5005'
transport: 'gniazdo'”Umieść punkty przerwania w kilku przypadkach testowych w klasie Testclass.
Przyjdź do terminala, gdzie uruchamiasz „
sbt -jvm-debug 5005
” i biegniesz jak poniżejNa przykład: com.myproject.module.AddServiceTest [Spec]
Możesz zobaczyć rozpoczęcie debugowania w punkcie przerwania przypadku testowego.
źródło
Wtyczka AttachMe IntelliJ jest potencjalnie szybsza w podłączaniu debugera bez konieczności manipulowania numerami portów:
Post na blogu i plik Readme zawierają instrukcje konfiguracji, jednak musiałem je nieco zmienić, aby działały na moim komputerze
Pobierz
installer.sh
skrypt z oficjalnego repozytoriumchmod u+x installer.sh
./installer.sh
/.config/attachme/agent.jar
i utworzyć~/.attachme
plikZmień,
~/.attachme
aby zawieraćZainstaluj odpowiednią wtyczkę Attachme i uruchom ponownie:
IntelliJ | Preferences | Plugins
Attachme
konfigurację uruchomienia:Run | Edit configurations... | Add new configuration | Attachme debugger registry | OK
Po tych jednorazowych oszustwach możemy automatycznie dołączyć debugger przez
Attachme
konfigurację uruchamianiasource ~/.attachme
sbt "runMain example.Hello"
źródło
Zgodnie z powyższą odpowiedzią Roberto Tyleya, ale w systemie Windows po zainstalowaniu sbt musimy również ustawić następujące zmienne środowiskowe:
SBT_HOME
C: \ Program Files (x86) \ sbt \
[lub gdziekolwiek sbt jest zainstalowany]
SBT_OPTS
-Xdebug -runjdwp: transport = dt_socket, server = y, suspend = n, address = 5005
[za przykład IntelliJ RT]
Dodaj do ścieżki:% SBT_HOME% \ bin;% SBT_OPTS%
Następnie uruchom następujące polecenie w wierszu poleceń w folderze projektu „sbt run -jvm -debug 5005”.
Jeśli to działa poprawnie, wiersz poleceń początkowo wyświetli wiersz „Nasłuchiwanie transportu dt_socket pod adresem: 5005”.
Ustaw punkt przerwania w IntelliJ.
Otwórz witrynę w przeglądarce, aby wywołać punkt przerwania debugera, np. „ Http: // localhost: 9000 / ”.
źródło