> > > Breakpoints. > can be done You mean you can add code to your code that stops the code at that location, or can I have a live program that was already compiled, possibly someone else's HEX file, and send a command over the RS-232 or USB port to stop at memory location 56? > The ability to monitor registers and change their values > > on the fly. > can be done Again, by adding code, or can I just send a command over RS-232 to a foreign HEX file, and retrieve the data I want? > Single stepping through code. > can be done > > The ability to alter the > > PC to begin execution of the code at a specific location. > can be done Do I have to recompile my program with code added to the location where I want to change the PC? > The fact > > that you don't need to use the serial port for it, so you can debug a > > serial application with it (it DOES cost two pins, but those are two > > of the least painful pins to lose, since they have relatively few > > peripherals associated with them). The ability to do a hardware > > reset. > > > don't know > > FAR more powerful than serial debugging. FAR FAR FAR more powerful. > > > I'm willing to believe you, but I'm not convinced ;-) > Maarten Hofman mentioned stack traces, is that possible ? Not sure, but the debugger can always keep track of each time something is put on the stack and removed from the stack, and create a trace that way. On the other hand, I'd imagine Microchip's proprietary debug protocol would allow reading of the stack registers as well. Maybe it's the speed, serial debugging can be done at 1.25 MBaud, > is ICD faster ? > > Are there any specifications about the ICD and maybe the commands ? I doubt it, so far I always understood it to be rather proprietary. However, the system used for it is pretty well known, and you can reuse the code from Microchip in order to create your own device. Greetings, Maarten Hofman. -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist