I'm using the "new" official editor (Synergy I guess) and there are no problems with line numbers. When a runtime error occurs the editor jumps to the line that caused it (sometimes it's like 1 line off, but that's not really a problem).
With the old editor the line numbers were wrong when I used select-endselect somewhere in my code. I can't remember the exact relation, but I think each comment line inside a select-block resulted in an offset of one for all lines behind this select-block... or something like that. Not sure if that was a bug of the editor itself or the compiled exes just returned wrong line numbers though.
And if everything else fails, you can just insert empty lines at different places to find out where exactly the error occurs. This might be a nasty work around, but at least it works. So if you think the error is caused by one function:
function myfunction(...)
cmd1()
cmd2()
cmd3()
endfunction
and the exe reports an error in line X, you can try to reproduce the same error with the code being altered as follows:
function myfunction(...)
cmd1()
cmd2()
cmd3()
endfunction
If the error is still reported to be in line X it has to be before this function, if the line number has changed to X+1, X+2 or X+3, cmd1()/cmd2()/cmd3() caused it and if the line number is bigger than X+3 the error was caused somewhere behind this function.
To be honest I worked with this system of debugging (or rather of finding the actual line of code where the error occurs...) for several years since I was too lazy to use another IDE.