In-Circuit Debugger/Debugging (ICD) utilizes debugging features incorporated into the device itself during the debugging process allowing breakpoints and various values to be accessible for reading once the breakpoint has occurred.
In-Circuit Emulator (ICE) typically replaces the entire device with a "pod" which then enables all signals on the devices data, address, control and ports lines to be routed to a device emulator, which emulates the function of the actual device it's replacing, which then provides real-time access to signal lines, registers, etc for analysis through an ICE user interface running on a PC. These advanced features enable the person running the ICE, not only breakpoint capabilities, but to interactively watch and often insert values into memory locations, registers, etc while the application is running. A trace capability may also be available where a history of device states and relative code execution points within the application are preserved enabling the execution of the application to be reversed and executed once again after new values are substituted in memory or registers.
The capabilities of an ICE system are often far more advanced than those of an ICD system.
BigDog