flow-storm-debugger
watchpoints
Our great sponsors
flow-storm-debugger | watchpoints | |
---|---|---|
33 | 7 | |
626 | 462 | |
2.4% | - | |
9.5 | 1.5 | |
10 days ago | about 1 year ago | |
Clojure | Python | |
The Unlicense | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
flow-storm-debugger
- FlowStorm a omniscient time travel debugger for Clojure/CLJS
-
What I Have Changed My Mind About in Software Development
Tracing debuggers give you the best of both worlds. I've recently started using Flow-storm [0], by @jpmonettas), and it's been quite transformative. You can still easily see the values flowing through your system (better than just "prints"), and it can handle multi-threaded / async scenarios quite nicely. You don't need to manually step through code, you can just "see" your data flow, and when you have loops or some other form of iteration, you can see the data for each pass. Coupling this with a good data visualization tool (such as Portal [1]) really feels like magic. I've been doing Clojure for quite a few years now, and was very happy with my plain REPL-driven workflow, but this is way better.
[0] https://github.com/jpmonettas/flow-storm-debugger
[1] https://github.com/djblue/portal
- ANN ClojureStorm: Omniscient time travel debugging for Clojure
-
What a good debugger can do
This is another example, a tracing time travel debugger for Clojure https://github.com/jpmonettas/flow-storm-debugger
Supports a bunch of stuff described there and more.
Lisps have some good tooling around debugging, for example clojure's flowstorm or common lisp which has built into the language most of what this article is talking about.
-
Debugging Lisp: trace options, break on conditions
There's some good debugging tooling for Clojure as well. A recent entrant is https://github.com/jpmonettas/flow-storm-debugger and of course there's the estabilished pretty full featured debugging features in CIDER (Emacs), Calva (VS Code) and Cursive (IntelliJ). And for barebones tracing from REPL there's goo old clojure.tools.trace.
-
FlowStorm - Flow Docs, experimental execution derived documentation for Clojure
For Emacs there is something already if you use the Emacs integration described here https://github.com/jpmonettas/flow-storm-debugger/tree/flow-docs/editors.
- Clojure at the REPL: Data Visualization
- [ANN] FlowStorm Clojure[Script] debugger 3.1.259 is out
- Debugging ClojureScript applications with FlowStorm
watchpoints
-
What a good debugger can do
It's sad that Python does not really support some of these debugging methods.
E.g. you cannot really watch variable changes. There are some workarounds, like writing a custom __setattr__ or __setattribute__ in case of an object, or checking all STORE_* operations. https://youtrack.jetbrains.com/issue/PY-30387 https://github.com/gaogaotiantian/watchpoints
Reverse debugging is also sth I would like to have, and there are a few projects to support this, but it's not really well supported in standard CPython. https://foss.heptapod.net/pypy/revdb https://pytrace.com/
-
Is there a tool to run code and AFTER that look at execution step by step.
There is also the watchpoints module to track changes to variables, but I don't think you can use the two of them together since they both use the same underlying callback in Python.
- Watchpoints - an easy-to-use, intuitive variable/object monitor tool for Python that behaves similar to watchpoints in gdb.
-
Show HN: Watchpoints, an easy to use watchpoints equivalent library for Python
It uses Python's built-in inspect module to get the caller frame. https://github.com/gaogaotiantian/watchpoints/blob/68bc13716...
It then uses sys.settrace (which is intended as an interface for debuggers) to step through the code and check whether the variable has been changed. Documentation on sys.settrace: https://docs.python.org/3/library/sys.html#sys.settrace
Python exposes most of its guts as part of the standard library, making clever hacks like this possible.
What are some alternatives?
test-refresh - Refreshes and reruns clojure.tests in your project.
python-varname - Dark magics about variable names in python
hashp - A better "prn" for debugging
debug-adapter-protocol - Defines a common protocol for debug adapters.
sayid - A debugger for Clojure
grub2-theme-preview - :city_sunrise: Preview a full GRUB 2.x theme (or just a background image) using KVM / QEMU
logseq - A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base. Use it to organize your todo list, to write your journals, or to record your unique life.
rr - Record and Replay Framework
scope-capture - Project your Clojure(Script) REPL into the same context as your code when it ran
spdlog - Fast C++ logging library.
portal - A clojure tool to navigate through your data.
delve - Delve is a debugger for the Go programming language.