There is no special debugger for macros, but since they are interpreted, you can easily figure out what's going on by using the "Msg" function at strategic points in your code.
Variables are not preserved between runs. (A possible future feature). However, you can preserve values by storing them in a file, or writing and reading registry keys.
Make sure that a macro is not modifying itself while running. Source Insight will abort any macro that attempts to edit the same file it's located in.
The Run Macro command simply starts running the macro at the cursor position. So just put the insertion point on the line you want to start running at and do Run Macro.
You can use the Run Macro command to run macro statements in any type of file, so you can put macro statements inside of a C file comment for example. The Run Macro command will even run macro statements if they are not inside a "macro x() {..}" block. Make sure you have a "stop" or "end" statement at the end if the macro is not inside of a macro { } block. Source Insight will not add macros to the command list if they are not saved in .EM files.
A macro file is in included with Source Insight called "utils.em". This file contains ome useful functions and you may want to look at it to see some examples.