I've been programming in C for the best part of a decade now but it's only within the last year that I've really started doing embedded systems programming.
When I did C programming for a personal computer, I commonly debugged my code simply by putting in printf statements around the place to check variable values, and also by using the instrument that lets you check the values of variables at runtime when you're stepping through the code.
Anyway, when I was doing my embedded systems project this year for college, I was kind of in the dark when my board's program started to malfunction. If I'd been using a PC, I would have used the debugger to single-step through code to check variables' values. What I eventually did was take the offending code and move it across to a PC, and then I used the PC to debug it.
Anyway, here's the dream I had in my head, which may or may not be a pipe dream: You know the PIC16F684 chip that costs less than a dollar, well what if they brought out the debug version of it (that costs maybe 20 dollars). The debug version would fit perfectly into the normal chip slot, except that it would have some sort of socket on the top of it for hooking it to a PC for doing stuff like printf's, and also maybe for running a full debugger that will let you check variables' values?