It does look like a bug in the Debug code. It seems to think Crsr is always one behind what it actually is. Step round the loop and you will see what I mean
First pass is empty, second pass is what should be the first and so on. I can't see a reason for this in the generated code - not surprisingly as, like you say, it works! Possibly because Crsr is a loop variable and debug is assuming it is somehow different. If you do the following and break after the Log then M displays as expected but Crsr doesn't.
For Each Crsr As Map In LL
M = Crsr
Log(Crsr.Get("Ra_CmdName"))