I really like nim, but I think one of it's weak points, is the ability to debug it. First of all I would like to mention, that I am not an expert in debuggers. I am happy when I get a debugger in front of me that just works without me needing to tweak anything at all. So this is more about how I imagine how it should be.
First of all, using a debugger already works, and it's nod horrible, but if you don't know how everything works, it's hard to get started. So:
Documentation: There should be section in the documentation that has some recommendations where to get started, and what currently works. It should also write about the quirks it has at the moment.
string support: Strings should be visualized with their content when seen in a debugger. With my current information, this a a one-liner to support in qt-creator.
collection support: Debuggers like gdb can be scripted, so that they know about collections and integrate nice with graphical frontends. That allows for example to view a collection with all it's children in a foldable tree, without the requirement to see what a seq type is actually compiled to.
treating iterator calls as functions calls: When I am debugging loops, a lot of steps through the program actually step through the inlined iterator code. But this code is very unlikely the code that I want to debug. Therefore I would like the debugger to skip the lines in the iterator, especially those from the standard library.
debug macros: When there are breakpoints in macro definitions, the the compilation should break there. Debugging macros should be as strait forward as debugging the rest of the code. Just with the difference, that the debugger is called on the compilation process instead of the execution process
debug macro generated code: The problem with macro generated code is, that there is no code that can be stepped through at runtime. But I think this is not an unsolvable problem. There is already the option to print a nimNode with macros.repr. I think there should be a nim file in the nimcache/ directory with all macro results. If the program fails in generated code, the debugger can show the lines in these files. Also breakpoits in these files should work.