2014-12-09 11 views
6

W ciągu ostatnich 10 dni czytałem "Programowanie w Scali" i pisałem kod Scala.Scala - proces tworzenia aplikacji oparty na konsolach

Jak widać w moim GitHub Scala playground, zaczynam naprawdę lubić ten język - jest tak szybki jak OCaml (dzięki technologii HotSpot JVM), chroni mnie przed moimi literami (i błędami!) Z jego mocnymi i statycznymi system typu, a co najważniejsze: w sensie korporacyjnym, nie mieszka w odległej "wyspie" (jak Haskell i OCaml) ... ponieważ ma ogromny ekosystem JVM.

My tylko problem do tej pory:

Chociaż mam zorientowali się, jak rozwijać mój kod Scala pod VIM z SBT-QuickFix lub pod Emacs z Ensime (a tym samym mają autouzupełnianie i nawigację błędzie), I do tej pory nie udało się znaleźć drogę do debugowania mojego kodu, z taką samą łatwością, że robię dla Pythona:

bash$ python -m pdb ./someCode.py 

Wszystkie wpisy Google wskazuje na, w zasadzie, mówiąc: „użyć tego IDE, które bardzo lubię. .. "

Istnieją jednak powody - nie ma punktu i Wyliczając je, albo je znasz, albo nie - ludzie tacy jak ja wolą (a) programmable editors i (b) samodzielny debugger, dostępny poza edytorem.

Jeśli jesteś jednym z niewielu podobnie myślących ludzi, którzy nie lubią IDE i używają Scala, naprawdę chciałbym wiedzieć, w jaki sposób debugujesz - w rzeczywistości byłbym zainteresowany usłyszeć twój cały przepływ pracy.

Mine, jakim jest:

  • Dodaj sbt-quickfix do mojego SBT Project/folderu (tylko look at my code w tym GitHub repo)
  • Spawn sbt w terminalu i uruchom ~compile tak, że automatycznie buduje kiedy zmieniam coś w moich źródłach
  • VIM automatycznie otrzymuje błędy i pokazuje je.
  • Kiedy kompilacja jest zielona, ​​naciśnij ENTER w sbt terminalu wpisz run
  • itp

Ensime jest nawet lepiej, pozwalając autouzupełnianie także:

  • sbt gen-ensime
  • Spawn emacs edytuje jeden z moich plików .scala i M-x ensime
  • Użyj ensime-typecheck-all (mapowane do F7 w moich dotfiles) i gdy wszystko jest OK ...
  • ensime-sbt-do-run

Oto do nadziei, że nie jestem sam - i że ktoś tam będzie mi pomóc w samodzielnym debugowania, zbyt .. - ostatnie wyzwanie, zanim w pełni obejmuję Scalę :-)

+0

Czego dokładnie chcesz od debuggera? Używam emacs + ensime, ma wbudowany debugger (domyślnie C-c C-d). Jeśli nie, to działam 'sat-start' z' ~ testQuick' lub '~ compile' – 4lex1v

+0

@ 4lex1v: Chcę naprawdę podstawowych rzeczy dostarczanych przez prawie wszystkie debuggery linii cmd (' gdb', 'python -m pdb ',' perl -d', etc) np możliwość "ja" wokół aktualnie wykonywanej linii, ustawienie "b" punktu na linii pliku, "dra wartości wartości zmiennych", "n-linia", itd. Wyszukiwałem go dla 'sat-start' ale nie znaleziono żadnych powiązanych ze Scalą linków - żadnych wskazówek? – ttsiodras

+1

To był "sbt-start", autokorekta, przepraszam. Nigdy wcześniej nie używałam debuggera CMD-line, przepraszam, ale to, co opisujesz doskonale wykonując z ensime. Przynajmniej nigdy nie słyszałem o żadnym debuggerze linii cmd dla scala – 4lex1v

Odpowiedz

1

Okazało się, że ensime ma tryb debugowania, który jakoś przeoczyłem. W połączeniu z Emacsem/Złem spędziłem kilka ostatnich dni w Emacs i Scali - i wszystko działa idealnie ...autouzupełnianie, odradzanie sbt w buforze, gdy chcę uruchomić, i debugowanie.

Jedyny mój jedyny problem to praca z programem Ensime z poziomu screen -ed sesji, co jest moim zwykłym trybem operandi (przez połączenia SSH). Markery zestawu debuggera Ensime current line i zestaw punktów przerwania są umieszczone na lewym obramowaniu - co działa dobrze w trybie graficznym Emacs, ale nie jest widoczne w Emacs w trybie tekstowym. Mam opened a ticket, a chłopaki najwyraźniej mają plan rozwiązania.

Powiązane problemy