Skip to content

Commit

Permalink
Fix enabling/disabling of thread breakpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
Juan Pedro Monetta Sanchez authored and Juan Pedro Monetta Sanchez committed Aug 16, 2023
1 parent 836d6f9 commit a19977e
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 28 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

### Bugs fixed

- Fix enabling/disabling of thread breakpoints

## 3.7.0 (15-08-2023)

### New Features
Expand Down
20 changes: 10 additions & 10 deletions src-dbg/flow_storm/debugger/runtime_api.clj
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@
(unblock-thread [_ thread-id])
(unblock-all-threads [_])

(add-breakpoint [_ fq-fn-symb])
(remove-breakpoint [_ fq-fn-symb])
(add-breakpoint [_ fq-fn-symb opts])
(remove-breakpoint [_ fq-fn-symb opts])

(stack-for-frame [_ flow-id thread-id fn-call-idx])
(toggle-recording [_])
Expand Down Expand Up @@ -217,11 +217,11 @@
(unblock-all-threads [_]
(api-call :local "unblock-all-threads" []))

(add-breakpoint [_ fq-fn-symb]
(api-call :local "add-breakpoint!" [fq-fn-symb]))
(add-breakpoint [_ fq-fn-symb opts]
(api-call :local "add-breakpoint!" [fq-fn-symb opts]))

(remove-breakpoint [_ fq-fn-symb]
(api-call :local "remove-breakpoint!" [fq-fn-symb]))
(remove-breakpoint [_ fq-fn-symb opts]
(api-call :local "remove-breakpoint!" [fq-fn-symb opts]))

(all-flows-threads [_]
(api-call :local "all-flows-threads" []))
Expand Down Expand Up @@ -346,13 +346,13 @@
(unblock-all-threads [_]
(api-call :remote "unblock-all-threads" []))

(add-breakpoint [_ fq-fn-symb]
(add-breakpoint [_ fq-fn-symb opts]
(case env-kind
:clj (api-call :remote "add-breakpoint!" [fq-fn-symb])
:clj (api-call :remote "add-breakpoint!" [fq-fn-symb opts])
:cljs (show-message "Operation not supported for ClojureScript" :warning)))

(remove-breakpoint [_ fq-fn-symb]
(api-call :remote "remove-breakpoint!" [fq-fn-symb]))
(remove-breakpoint [_ fq-fn-symb opts]
(api-call :remote "remove-breakpoint!" [fq-fn-symb opts]))

(all-flows-threads [_]
(api-call :remote "all-flows-threads" []))
Expand Down
26 changes: 16 additions & 10 deletions src-dbg/flow_storm/debugger/ui/browser/screen.clj
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@
(let [[{:keys [remove-all]}] (obj-lookup "browser-observable-instrumentations-list-data")]
(remove-all [inst])))

(defn- add-breakpoint [fq-fn-symb]
(runtime-api/add-breakpoint rt-api fq-fn-symb))
(defn- add-breakpoint [fq-fn-symb opts]
(runtime-api/add-breakpoint rt-api fq-fn-symb opts))

(defn- remove-breakpoint [fq-fn-symb]
(runtime-api/remove-breakpoint rt-api fq-fn-symb))
(defn- remove-breakpoint [fq-fn-symb opts]
(runtime-api/remove-breakpoint rt-api fq-fn-symb opts))

(defn- instrument-function
([var-ns var-name] (instrument-function var-ns var-name {}))
Expand Down Expand Up @@ -93,7 +93,7 @@
(add-class browser-break-button "enable")
(.setOnAction browser-instrument-button (event-handler [_] (instrument-function ns name)))
(.setOnAction browser-instrument-rec-button (event-handler [_] (instrument-function ns name {:deep? true})))
(.setOnAction browser-break-button (event-handler [_] (add-breakpoint (symbol (str ns) (str name)))))
(.setOnAction browser-break-button (event-handler [_] (add-breakpoint (symbol (str ns) (str name)) {})))

(.setText selected-fn-fq-name-label (format "%s" #_ns name))
(when added
Expand Down Expand Up @@ -252,7 +252,7 @@
(.setSpacing 10))
inst-del-btn (button :label "del"
:class "browser-instr-del-btn"
:on-click (fn [] (remove-breakpoint (symbol var-ns var-name))))]
:on-click (fn [] (remove-breakpoint (symbol var-ns var-name) {})))]
(doto (h-box [inst-lbl inst-del-btn])
(.setSpacing 10)
(.setAlignment Pos/CENTER_LEFT))))]
Expand All @@ -276,15 +276,16 @@
(uninstrument-function (:var-ns v) (:var-name v)))

(doseq [b del-brks]
(remove-breakpoint (symbol (:var-ns b) (:var-name b)))))))
(remove-breakpoint (symbol (:var-ns b) (:var-name b)) {})))))
en-dis-chk (doto (CheckBox.)
(.setSelected true))
_ (.setOnAction en-dis-chk
(event-handler
[_]
(let [type-groups (group-by :inst-type (get-all-items))
change-namespaces (:ns type-groups)
change-vars (:var type-groups)]
change-namespaces (:ns type-groups)
change-vars (:var type-groups)
breakpoints (:break type-groups)]

(when (seq change-namespaces)
(if (.isSelected en-dis-chk)
Expand All @@ -294,7 +295,12 @@
(doseq [v change-vars]
(if (.isSelected en-dis-chk)
(instrument-function (:var-ns v) (:var-name v) {:disable-events? true})
(uninstrument-function (:var-ns v) (:var-name v) {:disable-events? true}))))))
(uninstrument-function (:var-ns v) (:var-name v) {:disable-events? true})))

(doseq [{:keys [var-ns var-name]} breakpoints]
(if (.isSelected en-dis-chk)
(add-breakpoint (symbol var-ns var-name) {:disable-events? true})
(remove-breakpoint (symbol var-ns var-name) {:disable-events? true}))))))
instrumentations-tools (doto (h-box [(label "Enable all")
en-dis-chk
delete-all-btn]
Expand Down
6 changes: 3 additions & 3 deletions src-inst/flow_storm/api.clj
Original file line number Diff line number Diff line change
Expand Up @@ -497,11 +497,11 @@
~form))

(defn break-at
([fq-fn-symb] (dbg-api/add-breakpoint! fq-fn-symb))
([fq-fn-symb args-pred] (dbg-api/add-breakpoint! fq-fn-symb args-pred)))
([fq-fn-symb] (dbg-api/add-breakpoint! fq-fn-symb {}))
([fq-fn-symb args-pred] (dbg-api/add-breakpoint! fq-fn-symb {} args-pred)))

(defn remove-break [fq-fn-symb]
(dbg-api/remove-breakpoint! fq-fn-symb))
(dbg-api/remove-breakpoint! fq-fn-symb {}))

(def unblock-thread dbg-api/unblock-thread)
(def clear-breaks dbg-api/clear-breakpoints!)
Expand Down
13 changes: 8 additions & 5 deletions src-inst/flow_storm/runtime/debuggers_api.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -302,15 +302,18 @@

#?(:clj
(defn add-breakpoint!
([fq-fn-symb] (add-breakpoint! fq-fn-symb (constantly true)))
([fq-fn-symb args-pred]
([fq-fn-symb opts] (add-breakpoint! fq-fn-symb opts (constantly true)))
([fq-fn-symb {:keys [disable-events?]} args-pred]
(tracer/add-breakpoint! (namespace fq-fn-symb) (name fq-fn-symb) args-pred)
(rt-events/publish-event! (rt-events/make-break-installed-event fq-fn-symb)))))
(when-not disable-events?
(rt-events/publish-event! (rt-events/make-break-installed-event fq-fn-symb))))))

#?(:clj
(defn remove-breakpoint! [fq-fn-symb]
(defn remove-breakpoint! [fq-fn-symb {:keys [disable-events?]}]
(tracer/remove-breakpoint! (namespace fq-fn-symb) (name fq-fn-symb))
(rt-events/publish-event! (rt-events/make-break-removed-event fq-fn-symb))))

(when-not disable-events?
(rt-events/publish-event! (rt-events/make-break-removed-event fq-fn-symb)))))

#?(:clj
(defn clear-breakpoints! []
Expand Down

0 comments on commit a19977e

Please sign in to comment.