flow-storm / flow-storm-debugger

A debugger for Clojure and ClojureScript with some unique features.
The Unlicense
690 stars 31 forks source link

I am not able to use the library, am I doing something wrong? #80

Closed blindcoding9 closed 1 year ago

blindcoding9 commented 1 year ago

project.clj

(defproject clean "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
            :url "https://www.eclipse.org/legal/epl-2.0/"}
  :dependencies [[org.clojure/clojure "1.11.1"]]
  :profiles {:dev {:dependencies [[com.github.jpmonettas/clojure "1.11.1-1"]
                                  [com.github.jpmonettas/flow-storm-dbg "3.5-alpha-1"]]
                   :exclusions   [org.clojure/clojure] ;; for disabling the official compiler
                   :jvm-opts     ["-Dclojure.storm.traceEnable=true"
                                  "-Dclojure.storm.instrumentEnable=true"
                                  "-Dclojure.storm.instrumentOnlyPrefixes=clean."]}}
  :repl-options {:init-ns clean.core})

core.clj ns

(ns clean.core
  (:require [flow-storm.api :as fs-api]))

(fs-api/local-connect)

#rtrace (reduce + (map inc (range 10)))

error:


Starting nREPL server...
C:\Users\fuser\.jdks\temurin-17.0.6\bin\java.exe -Dfile.encoding=Cp1252 -Dclojure.storm.traceEnable=true -Dclojure.storm.instrumentEnable=true -Dclojure.storm.instrumentOnlyPrefixes=clean.,my-project.,lib1.,lib2.core -Dclojure.compile.path=C:\code\clean\target\classes -Dclean.version=0.1.0-SNAPSHOT -Dclojure.debug=false -javaagent:C:\Users\fuser\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\223.8617.56\lib\idea_rt.jar=62924:C:\Users\fuser\AppData\Local\JetBrains\Toolbox\apps\IDEA-U\ch-0\223.8617.56\bin -classpath C:\code\clean\test;C:\code\clean\src;C:\code\clean\dev-resources;C:\code\clean\resources;C:\code\clean\target\classes;C:\Users\fuser\.m2\repository\com\github\oshi\oshi-core\5.8.6\oshi-core-5.8.6.jar;C:\Users\fuser\.m2\repository\org\kordamp\ikonli\ikonli-javafx\11.5.0\ikonli-javafx-11.5.0.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-connector-basic\1.8.2\maven-resolver-connector-basic-1.8.2.jar;C:\Users\fuser\.m2\repository\org\eclipse\jetty\jetty-http\9.4.48.v20220622\jetty-http-9.4.48.v20220622.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-artifact\3.8.6\maven-artifact-3.8.6.jar;C:\Users\fuser\.m2\repository\org\nrepl\incomplete\0.1.0\incomplete-0.1.0.jar;C:\Users\fuser\.m2\repository\org\codehaus\plexus\plexus-cipher\2.0\plexus-cipher-2.0.jar;C:\Users\fuser\.m2\repository\javax\xml\bind\jaxb-api\2.4.0-b180830.0359\jaxb-api-2.4.0-b180830.0359.jar;C:\Users\fuser\.m2\repository\org\codehaus\plexus\plexus-component-annotations\2.1.0\plexus-component-annotations-2.1.0.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.cli\1.0.214\tools.cli-1.0.214.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-impl\1.8.2\maven-resolver-impl-1.8.2.jar;C:\Users\fuser\.m2\repository\org\apache\httpcomponents\httpcore\4.4.15\httpcore-4.4.15.jar;C:\Users\fuser\.m2\repository\org\codehaus\plexus\plexus-classworlds\2.6.0\plexus-classworlds-2.6.0.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-controls\19.0.2.1\javafx-controls-19.0.2.1-win.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-swing\19.0.2.1\javafx-swing-19.0.2.1.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-controls\19.0.2.1\javafx-controls-19.0.2.1.jar;C:\Users\fuser\.m2\repository\org\clojure\clojure\1.11.1\clojure-1.11.1.jar;C:\Users\fuser\.m2\repository\com\cognitect\transit-js\0.8.874\transit-js-0.8.874.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-model-builder\3.8.6\maven-model-builder-3.8.6.jar;C:\Users\fuser\.m2\repository\org\clojure\core.async\1.6.673\core.async-1.6.673.jar;C:\Users\fuser\.m2\repository\org\kordamp\ikonli\ikonli-materialdesign-pack\11.5.0\ikonli-materialdesign-pack-11.5.0.jar;C:\Users\fuser\.m2\repository\org\codehaus\plexus\plexus-sec-dispatcher\2.0\plexus-sec-dispatcher-2.0.jar;C:\Users\fuser\.m2\repository\net\java\dev\jna\jna\5.10.0\jna-5.10.0.jar;C:\Users\fuser\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.14.2\jackson-core-2.14.2.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-builder-support\3.8.6\maven-builder-support-3.8.6.jar;C:\Users\fuser\.m2\repository\com\cognitect\aws\endpoints\1.1.12.321\endpoints-1.1.12.321.jar;C:\Users\fuser\.m2\repository\com\google\inject\guice\4.2.2\guice-4.2.2-no_aop.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-core\3.8.6\maven-core-3.8.6.jar;C:\Users\fuser\.m2\repository\org\eclipse\sisu\org.eclipse.sisu.plexus\0.3.5\org.eclipse.sisu.plexus-0.3.5.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-graphics\19.0.2.1\javafx-graphics-19.0.2.1.jar;C:\Users\fuser\.m2\repository\com\github\jpmonettas\flow-storm-dbg\3.5-alpha-1\flow-storm-dbg-3.5-alpha-1.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-named-locks\1.8.2\maven-resolver-named-locks-1.8.2.jar;C:\Users\fuser\.m2\repository\org\clojure\data.json\2.4.0\data.json-2.4.0.jar;C:\Users\fuser\.m2\repository\org\eclipse\jetty\jetty-io\9.4.48.v20220622\jetty-io-9.4.48.v20220622.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-resolver-provider\3.8.6\maven-resolver-provider-3.8.6.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-settings-builder\3.8.6\maven-settings-builder-3.8.6.jar;C:\Users\fuser\.m2\repository\org\msgpack\msgpack\0.6.12\msgpack-0.6.12.jar;C:\Users\fuser\.m2\repository\nrepl\nrepl\1.0.0\nrepl-1.0.0.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-plugin-api\3.8.6\maven-plugin-api-3.8.6.jar;C:\Users\fuser\.m2\repository\org\clojure\core.cache\1.0.225\core.cache-1.0.225.jar;C:\Users\fuser\.m2\repository\org\apache\maven\shared\maven-shared-utils\3.3.4\maven-shared-utils-3.3.4.jar;C:\Users\fuser\.m2\repository\io\github\g00fy2\versioncompare\1.4.1\versioncompare-1.4.1.jar;C:\Users\fuser\.m2\repository\com\cognitect\http-client\1.0.115\http-client-1.0.115.jar;C:\Users\fuser\.m2\repository\org\slf4j\slf4j-api\1.7.32\slf4j-api-1.7.32.jar;C:\Users\fuser\.m2\repository\io\github\clojure\tools.build\0.9.4\tools.build-0.9.4.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-transport-file\1.8.2\maven-resolver-transport-file-1.8.2.jar;C:\Users\fuser\.m2\repository\org\java-websocket\Java-WebSocket\1.5.3\Java-WebSocket-1.5.3.jar;C:\Users\fuser\.m2\repository\org\clojure\core.specs.alpha\0.2.62\core.specs.alpha-0.2.62.jar;C:\Users\fuser\.m2\repository\org\clojure\core.memoize\1.0.253\core.memoize-1.0.253.jar;C:\Users\fuser\.m2\repository\org\clojure\java.classpath\1.0.0\java.classpath-1.0.0.jar;C:\Users\fuser\.m2\repository\net\java\dev\jna\jna-platform\5.10.0\jna-platform-5.10.0.jar;C:\Users\fuser\.m2\repository\org\javassist\javassist\3.18.1-GA\javassist-3.18.1-GA.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.analyzer.jvm\1.2.2\tools.analyzer.jvm-1.2.2.jar;C:\Users\fuser\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\fuser\.m2\repository\com\googlecode\json-simple\json-simple\1.1.1\json-simple-1.1.1.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-api\1.8.2\maven-resolver-api-1.8.2.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.reader\1.3.6\tools.reader-1.3.6.jar;C:\Users\fuser\.m2\repository\org\kordamp\ikonli\ikonli-core\11.5.0\ikonli-core-11.5.0.jar;C:\Users\fuser\.m2\repository\org\clojure\data.xml\0.2.0-alpha8\data.xml-0.2.0-alpha8.jar;C:\Users\fuser\.m2\repository\org\ow2\asm\asm\9.2\asm-9.2.jar;C:\Users\fuser\.m2\repository\org\clojure\spec.alpha\0.3.218\spec.alpha-0.3.218.jar;C:\Users\fuser\.m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar;C:\Users\fuser\.m2\repository\org\jetbrains\annotations\22.0.0\annotations-22.0.0.jar;C:\Users\fuser\.m2\repository\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar;C:\Users\fuser\.m2\repository\org\eclipse\sisu\org.eclipse.sisu.inject\0.3.5\org.eclipse.sisu.inject-0.3.5.jar;C:\Users\fuser\.m2\repository\aopalliance\aopalliance\1.0\aopalliance-1.0.jar;C:\Users\fuser\.m2\repository\org\clojure\data.priority-map\1.1.0\data.priority-map-1.1.0.jar;C:\Users\fuser\.m2\repository\org\eclipse\jetty\jetty-util\9.4.48.v20220622\jetty-util-9.4.48.v20220622.jar;C:\Users\fuser\.m2\repository\com\github\jpmonettas\hansel\0.1.54\hansel-0.1.54.jar;C:\Users\fuser\.m2\repository\com\cognitect\aws\s3\822.2.1145.0\s3-822.2.1145.0.jar;C:\Users\fuser\.m2\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;C:\Users\fuser\.m2\repository\org\slf4j\jcl-over-slf4j\1.7.36\jcl-over-slf4j-1.7.36.jar;C:\Users\fuser\.m2\repository\com\github\jpmonettas\j-system-theme-detector\3.8\j-system-theme-detector-3.8.jar;C:\Users\fuser\.m2\repository\com\cognitect\aws\api\0.8.612\api-0.8.612.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-swing\19.0.2.1\javafx-swing-19.0.2.1-win.jar;C:\Users\fuser\.m2\repository\org\eclipse\jetty\jetty-client\9.4.48.v20220622\jetty-client-9.4.48.v20220622.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-graphics\19.0.2.1\javafx-graphics-19.0.2.1-win.jar;C:\Users\fuser\.m2\repository\de\jangassen\jfa\1.2.0\jfa-1.2.0.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.gitlibs\2.5.190\tools.gitlibs-2.5.190.jar;C:\Users\fuser\.m2\repository\com\cognitect\transit-clj\1.0.333\transit-clj-1.0.333.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-base\19.0.2.1\javafx-base-19.0.2.1.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.analyzer\1.1.0\tools.analyzer-1.1.0.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-util\1.8.2\maven-resolver-util-1.8.2.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-transport-http\1.8.2\maven-resolver-transport-http-1.8.2.jar;C:\Users\fuser\.m2\repository\org\codehaus\plexus\plexus-utils\3.3.1\plexus-utils-3.3.1.jar;C:\Users\fuser\.m2\repository\org\slf4j\slf4j-nop\1.7.36\slf4j-nop-1.7.36.jar;C:\Users\fuser\.m2\repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;C:\Users\fuser\.m2\repository\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.deps\0.17.1297\tools.deps-0.17.1297.jar;C:\Users\fuser\.m2\repository\com\cognitect\transit-java\1.0.371\transit-java-1.0.371.jar;C:\Users\fuser\.m2\repository\com\cognitect\transit-cljs\0.8.280\transit-cljs-0.8.280.jar;C:\Users\fuser\.m2\repository\org\apache\httpcomponents\httpclient\4.5.13\httpclient-4.5.13.jar;C:\Users\fuser\.m2\repository\org\openjfx\javafx-base\19.0.2.1\javafx-base-19.0.2.1-win.jar;C:\Users\fuser\.m2\repository\org\codehaus\plexus\plexus-interpolation\1.26\plexus-interpolation-1.26.jar;C:\Users\fuser\.m2\repository\org\apache\maven\resolver\maven-resolver-spi\1.8.2\maven-resolver-spi-1.8.2.jar;C:\Users\fuser\.m2\repository\com\github\jpmonettas\clojure\1.11.1-1\clojure-1.11.1-1.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.logging\1.2.4\tools.logging-1.2.4.jar;C:\Users\fuser\.m2\repository\org\clojure\tools.namespace\1.4.4\tools.namespace-1.4.4.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-repository-metadata\3.8.6\maven-repository-metadata-3.8.6.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-model\3.8.6\maven-model-3.8.6.jar;C:\Users\fuser\.m2\repository\org\apache\maven\maven-settings\3.8.6\maven-settings-3.8.6.jar clojure.main -i C:\Users\fuser\AppData\Local\Temp\form-init17784466733702033459.clj
Storm tracing enable.
Storm functions plugged in
Runtime index system started
abr. 24, 2023 6:56:21 PM com.sun.javafx.application.PlatformImpl startup
ADVERTÊNCIA: Unsupported JavaFX configuration: classes were loaded from 'unnamed module @13866865'
Starting  #'flow-storm.debugger.config/config
Starting  #'flow-storm.debugger.state/state
Starting  #'flow-storm.debugger.events-queue/events-queue
Starting  #'flow-storm.debugger.ui.state-vars/ui-objs
Starting  #'flow-storm.debugger.ui.state-vars/tasks-subscriptions
Starting  #'flow-storm.debugger.runtime-api/rt-api
Waiting for full system start before dispatching events
Starting  #'flow-storm.debugger.docs/fn-docs
Loading docs using () files
Starting  #'flow-storm.debugger.ui.main/ui
Waiting for full system start before dispatching events
Runtime starting mem reporting subsystem
#error {
 :cause Cannot invoke "clojure.storm.IForm.getForm()" because "form" is null
 :via
 [{:type clojure.lang.Compiler$CompilerException
   :message Syntax error macroexpanding at (clean/core.clj:6:1).
   :data #:clojure.error{:phase :execution, :line 6, :column 1, :source clean/core.clj}
   :at [clojure.lang.Compiler load Compiler.java 7665]}
  {:type java.lang.NullPointerException
   :message Cannot invoke "clojure.storm.IForm.getForm()" because "form" is null
   :at [clojure.storm.FormRegistry makeFormMap FormRegistry.java 25]}]
 :trace
 [[clojure.storm.FormRegistry makeFormMap FormRegistry.java 25]
  [clojure.storm.FormRegistry getForm FormRegistry.java 52]
  [flow_storm.runtime.indexes.storm_form_registry.StormFormRegistry get_form storm_form_registry.clj 13]
  [flow_storm.runtime.indexes.api$get_form invokeStatic api.cljc 176]
  [flow_storm.runtime.indexes.api$get_form invoke api.cljc 174]
  [flow_storm.tracer$trace_form_init invokeStatic tracer.cljc 35]
  [flow_storm.tracer$trace_form_init invoke tracer.cljc 26]
  [clean.core$eval3430 invokeStatic core.clj 1]
  [clean.core$eval3430 invoke core.clj 1]
  [clojure.lang.Compiler eval Compiler.java 7194]
  [clojure.lang.Compiler eval Compiler.java 7183]
  [clojure.lang.Compiler load Compiler.java 7653]
  [clojure.lang.RT loadResourceScript RT.java 381]
  [clojure.lang.RT loadResourceScript RT.java 372]
  [clojure.lang.RT load RT.java 459]
  [clojure.lang.RT load RT.java 424]
  [clojure.core$load$fn__6908 invoke core.clj 6161]
  [clojure.core$load invokeStatic core.clj 6160]
  [clojure.core$load doInvoke core.clj 6144]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [clojure.core$load_one invokeStatic core.clj 5933]
  [clojure.core$load_one invoke core.clj 5928]
  [clojure.core$load_lib$fn__6850 invoke core.clj 5975]
  [clojure.core$load_lib invokeStatic core.clj 5974]
  [clojure.core$load_lib doInvoke core.clj 5953]
  [clojure.lang.RestFn applyTo RestFn.java 142]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$load_libs invokeStatic core.clj 6016]
  [clojure.core$load_libs doInvoke core.clj 6000]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.core$apply invokeStatic core.clj 669]
  [clojure.core$require invokeStatic core.clj 6038]
  [clojure.core$require doInvoke core.clj 6038]
  [clojure.lang.RestFn invoke RestFn.java 408]
  [user$eval5 invokeStatic form-init17784466733702033459.clj 1]
  [user$eval5 invoke form-init17784466733702033459.clj 1]
  [clojure.lang.Compiler eval Compiler.java 7194]
  [clojure.lang.Compiler eval Compiler.java 7183]
  [clojure.lang.Compiler eval Compiler.java 7183]
  [clojure.lang.Compiler load Compiler.java 7653]
  [clojure.lang.Compiler loadFile Compiler.java 7591]
  [clojure.main$load_script invokeStatic main.clj 475]
  [clojure.main$init_opt invokeStatic main.clj 477]
  [clojure.main$init_opt invoke main.clj 477]
  [clojure.main$initialize invokeStatic main.clj 508]
  [clojure.main$null_opt invokeStatic main.clj 542]
  [clojure.main$null_opt invoke main.clj 539]
  [clojure.main$main invokeStatic main.clj 664]
  [clojure.main$main doInvoke main.clj 616]
  [clojure.lang.RestFn applyTo RestFn.java 137]
  [clojure.lang.Var applyTo Var.java 705]
  [clojure.main main main.java 40]]}
Connecting to local nREPL server...
Clojure 1.11.1
nREPL server started on port 62926 on host 127.0.0.1 - nrepl://127.0.0.1:62926
jpmonettas commented 1 year ago

Hi @blindcoding9 ! So you have two ways of using the debugger with Clojure:

Your configuration is for the ClojureStorm one so you don't need any of the #rtrace or #trace things, just open the UI evaluating the :dbg keyword when you need it. And nothing more, all your code will be recorded, no need for anything else.

Try the tutorial by evaluating the :tut/basics if you haven't.

But once you swapped your compiler (like you did in your config), things like #rtrace or #trace will give you errors. Here are the docs https://jpmonettas.github.io/flow-storm-debugger/user_guide.html#_clojure

Show up in #flow-storm in Clojurians slack if you have more questions!

Cheers, Juan