You probably all know about Rebugger. I haven’t had any time to work on it lately, and probably won’t for a couple more months. I’d like to encourage people who are impatient for a debugger to jump in and help make it better. Here are reasons to consider this:
- Rebugger and Revise (upon which Rebugger is based) are pretty extensively documented, even down to the internals. I did this precisely to make it easier for others to contribute, but if anything it’s had the opposite effect.
- Rebugger is tiny: the core
src/debug.jl
file is currently 600 lines of code and, other than Revise, has no significant dependencies. - Rebugger does not interact with call stacks; everything is done in terms of julia expressions. That means anyone who has written or edited a macro or otherwise worked with Julia expressions has the background needed to pitch in—this is not rocket science.
- I’ve outlined solutions to things like how to add breakpoints. Once breakpoints are added, I think it can interact with graphical debuggers (aka, Juno).
- The Julia compiler team’s priorities linked above by Stefan (which is a fantastic list, and ordered the same way I’d order it) suggests it will be a while before there’s another solution, unless someone outside the team picks up Gallium on their own.
Here are some of the most impactful ways to help out:
- [*] Revise’s
get_def
still fails to fetch expressions for too many functions. The failure presumably occurs in the signature-Dict lookup (sigtmap
) as outlined here. Figuring what’s failing, and fixing it, would be one of the most important contributions. (Progress: Use type intersection to match signatures to those of methods by timholy · Pull Request #213 · timholy/Revise.jl · GitHub, Capture methods that have docstring + performance annotation by timholy · Pull Request #215 · timholy/Revise.jl · GitHub, Better handling of stacktraces by timholy · Pull Request #52 · timholy/Rebugger.jl · GitHub) - Add breakpoints
- When presenting expressions for Rebugger don’t expand macros (ref Avoid expanding macros in function bodies with a docstring by timholy · Pull Request #210 · timholy/Revise.jl · GitHub)
- (Fairly simple with SnoopCompile, but tedious) Reduce Rebugger’s latency when you first start Julia or first load Rebugger
- Fix display problem with long function · Issue #29 · timholy/Rebugger.jl · GitHub (would benefit from someone who knows the REPL or is willing to learn) (note this is not necessary if Juno is your real target)
- Fix Revise should "follow" files that go from add->dev · Issue #146 · timholy/Revise.jl · GitHub