Debugging Julia script on SSH connection (no GUI)

Is there anything remotely like/similar to pudb for Julia? It is easily one of my favorite ways to debug code when logged into a HPC/cluster node without GUI or X window forwarding.

The TUI approach performs extremely well over limited bandwidth and the package itself is very small & lightweight that can be pip installed very easily. Moreover you can watch the call stack, interactively view the workspace variables, keep an eye on breakpoints, set how you want to see variables, switch between the debug/normal REPL etc. all without a GUI interface requiring X window forwarding. In terms of ease of usage, pudb is couple of orders magnitude improvement over pdb.

I was looking for something similar in Julia and it looks to me like there is currently no such package. Does anyone know of something similar? May VIM or Emacs based?

If not … what is the most Julian way to debug code in the absence of Juno/VSCode etc. in 2023 (i.e. not the pdb style which is what Debugger seems to emulate).

2 Likes

There is this keyboard-controlled GitHub - JuliaDebug/Debugger.jl: Julia debugger that should be good enough.

I think it’s actually part of VS Code (at least previously Juno), but then some add-on makes it a GUI version, but I’m not aware of any TUI version or it or any debugger.

There’s also Infiltrator.jl that I found to me nice. And I just noticed brand-new:

I don’t know how well it works. Since the GPT-4 upgrade to ChatGPT hopefully it works even better for Julia, same as for for other languages; often you can just copy-paste an error message to it in case it generated bad code, and that’s enough to get a fix. Or so they say, for Python if I recall.

There are also many tools that can help with code, e.g. for formatting and linters and:

GitHub - tonyhffong/Lint.jl: A lint tool for Julia code StaticLint.jl

1 Like

I’ve never used pdb, but from browsing the docs it does not seem as usable (and pretty) as Debugger.jl:

It doesn’t give you the GUI-like experience of pudb, but you can do all the things you describe with a more manual interface.

2 Likes

Two other things to point out:

  • you can edit, run, and debug code remotely with VSCode: Visual Studio Code Remote Development
  • while it’s not officially a debugger, I find that Revise remains my favorite way of debugging: I typically find it more efficient to just insert @show statements in my code and run it again in the same REPL session, time and time again. Revise makes that very painless. I’m far from a Python expert, but my understanding is that it’s a better experience than comparable Python packages, so if you’ve not tried this you should give it a chance.
9 Likes

My thought - what is stopping you having a GUI?
If using Windows have you tried using Mobaxterm - that gives you all sorts of graphical clients plus sets up a X server on your laptop,
You can also do all sorts of funky tunneling and proxy setups once you have an ssh connection.

1 Like