An in-circuit emulator (ICE) is a hardware interface that allows a programmer to change or debug the software in an embedded system. The ICE is temporarily installed between the embedded system and an external terminal or personal computer so that the programmer can observe and alter what takes place in the embedded system, which has no display or keyboard of its own.
An ICE serves as a "surrogate" CPU (central processing unit) for the microcomputer in an embedded system. The ICE usually has a connector that fits the CPU socket in the system. If the connector provided with the ICE does not match the socket in the system, a suitable adapter can usually be found. An ICE can assist design engineers in product development, and also assist programmers or end users in product upgrading, modification, or maintenance.
Using an ICE, technicians can test new, revised, or modified programming elements on an embedded system's hardware without committing to the change. Once they have optimized the embedded-system software by testing various versions using the ICE, technicians can modify the actual CPU program accordingly. This process ensures that the final product will function exactly as the vendor and consumer expect.
Continue reading about in-circuit emulators:
Introduction to In-Circuit Emulators
Wikipedia has an entry for in-circuit emulators.
The GANNSLE Group's Beginners' Corner explains in-circuit emulators