This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-10-09
Channels
- # 100-days-of-code (6)
- # announcements (4)
- # atlanta-clojurians (1)
- # aws (1)
- # beginners (65)
- # boot (21)
- # cider (9)
- # cljsrn (3)
- # clojure (186)
- # clojure-android (4)
- # clojure-conj (1)
- # clojure-dev (12)
- # clojure-germany (3)
- # clojure-italy (8)
- # clojure-nl (1)
- # clojure-russia (32)
- # clojure-spec (19)
- # clojure-uk (41)
- # clojurescript (83)
- # core-async (5)
- # cursive (18)
- # datomic (15)
- # emacs (5)
- # events (4)
- # fulcro (7)
- # hyperfiddle (4)
- # leiningen (4)
- # liberator (1)
- # off-topic (65)
- # overtone (4)
- # pedestal (5)
- # perun (1)
- # planck (3)
- # re-frame (1)
- # reagent (3)
- # rum (5)
- # shadow-cljs (8)
- # spacemacs (19)
- # testing (3)
- # tools-deps (4)
- # yada (6)
@razum2um а ты хочешь что-то типа pdb получить? или что такое "полноценный дебаггер"?
@razum2um можешь привести кейс, когда понадобился дебагер? мне за 5 лет он понадобился ровно 1 раз, когда я принимал ring запрос и мне нужно было в точке приема его поймать и посмотреть внутрь. во всех остальных случаях repl + либы по отладке (dbgn и т.д.) но этот кейс возник ровно потому, что надо код лучше организовывать...
а чем либы по отладке (dbgn) отличаются от дебагера?
@mike1452 @kirill.salykin в принципе всегда можно сказать, что можно обойтись принтами или например tools.trace. есть еще вариант засовывания локального состояние в какой нибудь глобальный атом, но по мне во-первых вывод глубоких структур не всегда читабелен. это на том, что влезает в 1 строку tools.trace/dbgn выглядят sexy… может быть дело еще в мышлении. я ленивый и не хочу держать в голове много сразу - увидел кусок - принял решение - посмотрел дальше (не сторонник долгого сосредоточенного взгляда на код. проще сэмулировать ситацию тестом, быстрее запустить и смотреть изнутри, имхо) Например, я в брейкпойнтах обычно дергаю какие нибудь части, причем этот процесс обычно последовательный - посмотрел 1 ветку, потом на основании этого другую итд. с уточняющими принтами такой feedback loop дольше и между перезапусками размывается контекст в голове и есть 2й пункт, хз насколько распространенный, но для меня важный. хороший дебаггер дает возможность быстро изучить минимально необходимые внутренности либ, чтобы лучше понять процесс. например в свое время я копался в кишках рельсы именно через step-in в дебаггере
Я как раньше дебагером не пользоватлся в той же джаве, считал это не спортивно... а вот REPL + дебаг очень даже органично получились.
кстати скоро будут доступны видео со StrangeLoop там Стю Халловей показывал свой ворквлов https://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw
@razum2um Есть стандартный дебагер в IDEA. Он работает в Clojure коде, но больше полезен для отладки interop в Java. Есть дебагер в Cider. Он заточен на CLojure, очень здорово позволяет отлаживать именно Clojure-ный код. Этих 2х дебагеров нам хватало за глаза. Но и то в редких случаях. При должной сноровке REPL + отладочный вывод + тесты приводят к тому, что дебагер нужен очень редко.
но согласен с @razum2um иногда хочется бряку поставить и посмотреть шо там происходит, я обычно https://github.com/georgejahad/debug-repl для этой цели использую
ouch Latest commit ceb12cc on 19 Aug 2013
иногда надо забуриться в кусок кода в работающем приложении в конкретной ситуации когда что-то там не то шо надо
после рельсов было труднее всего, там binding.pry
с космическими возможностями по исследованию кода
> debug-repl
дык https://github.com/razum2um/clj-debugger это оно же чуть-чуть расширенное - показывает контекст, может немного скипать, кто-то мне добавил подключение к тредам 🙂 но внутри это тупо clojure.main/repl который, да, но оно не умеет ни шагать, ни show-source/$
(clojure.repl/source? нуну) и это.. мы все привыкли к плюшкам типа reply, rebel-readline. там всего этого нет. хотя break-catch я юзаю до сих пор когда импортирую разную невалидную хрень и что-то отваливается посреди процесса
ну и с таким именем опять стыдно, что не стандарт дефакто. кстати, году в 15 cider юзал именно это, но сейчас я посмотрел - они все самостоятельно переписали
кстати, в clojure.main/repl у меня возникали претензии еще и тут https://github.com/clojure/clojure/blob/master/src/clj/clojure/main.clj#L277L278