Another Debugger: MagneticReadHead.jl

Now that Debugger.jl, has been announced,
it seems an appropriate time to announce my debugger is also ready for public use.

It is a bit more beta, and it would thus really benifit from people using it and giving feedback.

asciicast

MagneticReadHead is more of a codename than a final name (though it might stick).
Bikeshedding over name is happenning here.

The core is fairly different to Debugger.jl,
MagneticReadhead is build ontop of Cassette.jl.
The debugging instrumentation gets compiled into the code.
In theory this can be faster than interpretting, but I have not yet run timing.

It is also using @tim.holy’s CodeTracking.jl, to help map between line numbers and methods.
In the future it will hopefully share more of the toolchain with Debugger.jl.

I am excited to live in a world where we have two competing julia debuggers.
No doubt this will lead to better common tooling, better drive for improvements, and redundancy incase of issues with one you can switch to the other.

39 Likes

My personal hope is that Debugger can steal tech from MagneticReadHead and incorporate some of the Cassette tricks to mitigate the orders-of-magnitude performance hit that interpretation can cause. I can imagine JuliaInterpreter behaving like an interpreter but selectively compiling methods that it doesn’t need step through that have loops or recursion, for example.

6 Likes

I should also say: amazing work on MagneticReadHead—it so cool to see Cassette used for so many things. Amazing that it started out as a framework for automatic differentiation and machine learning.

11 Likes

Using it already. And it works! Thankyou.

2 Likes

Debugger : (Irish) The person who sold you the system.

1 Like

How to install it? Tried but

(v1.1) pkg> add https://github.com/oxinabox/MagneticReadHead.jl
   Cloning git-repo `https://github.com/oxinabox/MagneticReadHead.jl`
  Updating git-repo `https://github.com/oxinabox/MagneticReadHead.jl`
 Resolving package versions...
ERROR: Unsatisfiable requirements detected for package SIUnits [b9d75638]:
 SIUnits [b9d75638] log:
 ├─possible versions are: [0.0.1-0.0.6, 0.1.0] or uninstalled
 ├─restricted by julia compatibility requirements to versions: uninstalled
 └─restricted by compatibility requirements with Images [916415d5] to versions: [0.0.1-0.0.6, 0.1.0] — no versions left
   └─Images [916415d5] log:
     ├─possible versions are: [0.2.0-0.2.50, 0.3.0-0.3.3, 0.4.0-0.4.50, 0.5.0-0.5.14, 0.6.0-0.6.1, 0.7.0, 0.8.0, 0.9.0-0.9.1, 0.10.0-0.10.1, 0.11.0-0.11.5, 0.12.0, 0.13.0, 0.14.0, 0.15.0-0.15.1, 0.16.0-0.16.1, 0.17.0-0.17.3] or uninstalled
     └─restricted to versions 0.17.2 by an explicit requirement, leaving only versions 0.17.2

This doesn’t actually have anything to do with MagneticReadHead.jl. SIUnits.jl is not compatible with Julia 1.0, but it was (until recently) required for Images.jl. You need the newest release of Images.jl which removes the dependency on SIUnits: https://github.com/JuliaImages/Images.jl/releases/tag/v0.17.3

Thanks, updating made it work (had updated yesterday, I think).

1 Like