プログラムの実行経路を表示する機能である。基本は実行開始からブレーク発生までに実行した命令を機械語もしくはソースコードにより表示する。表示にはタイムスタンプも付加されるため、命令を実行したタイミングを時間により確認することができる。また、フルICEでは、実際に発生したバスの動きをタイムスタンプと共に表示するとも可能である。
長時間のプログラム実行では全ての動作をトレースすることは不可能なため、キーとなるポイント(トリガポイント)を指定し、そのポイントまで、その前後、またはそれ以降のプログラムトレースを行うように指定することもある。
主に、不正な例外が発生した場合の不正処理の発生源の特定や、リアルタイムにデータのアクセスを確認することに用いられる。
プロファイル解析.
プログラムのデバッグではなく、プログラムの性能(実行時間等のパフォーマンスや、品質の信頼性など)を測定することが可能である。
ICEの変遷.
初期のフルICE.
最も初期のICEでは、CPUの内部回路をいくつかに分けて基板上に再現したものが存在した。これが古典的なICEであり、CPU回路が複雑化し動作速度も向上すると、外部でフリップフロップ回路をつないでいたのでは対応できなくなり、初期のフルICEの方式は比較的短命であった。
フルICE.
JTAG ICE.
JTAG端子は内部的には数珠つなぎになっているので読み出しに時間がかかったり、回路ブロックそのものが停止すれば読み出せなくなるなど、ロジックアナライザ用やICE用の信号を得る手段としては万全ではないが、フルICEに比べて簡便なプローブで接続できるため、多くの大規模ロジック回路を持つ半導体製品用の開発装置として利用され、JTAGエミュレータやROMエミュレータなどのオンチップ・エミュレータを使用することが多くなってきている。このような開発装置の中には「ICE」と名乗るものもあり、従来型のフルICEとの違いで多少の混乱がある。
JTAG ICEでは、レジスタ読み書き、メモリ読み書き、ブレークポイント設定、実行、停止、ステップ実行などの機能回路が集積されたJTAG端子付き CPU にて、JTAG端子経由にてオンチップデバッグ機能を提供可能である。
流動性の罠