命令セットシミュレータ
上記のサイクル(フェッチ、実行、新しいアドレスの計算)という処理を行うために必要な命令数はハードウェアに依存するが、IBM System/360/370/390/ES9000 クラスのマシンでは 12~13命令で実現できる。正しいメモリ位置のチェックや、条件によってプログラムを中断する機能は、かなりのオーバーヘッドが必要であるが、最適化技法により許容できるレベルまでオーバーヘッドを削減することができる。命令のステップ実行、トレース、テスト用のエラールーチンへの意図的なジャンプ(エラーがない場合でも)などの 強力なデバッグ能力を提供できるので、テスト目的のためには十分許容できる。さらに、実行コード網羅率を測定するために、命令の完全なトレースを利用することもできる。
対象プログラムの実行をモニタすることで、実環境はなくモニタ上で発生するランダムエラーを検出することに役立つ場合がある。 これは、シミュレーションの場合には同じアドレス空間にモニタプログラムが存在しているため、対象のプログラムが通常と異なる場所にロードされることで発生する場合がある。
対象のプログラムがメモリ上のランダムな位置の値を読み取った場合、たとえばヌル値(X"00") を読み取り、プログラムは正常に動作していたとする。モニタプログラムがプログラムをロードする番地をシフトさせると、それによりたとえばX"FF"を読み取るようになり、プログラムのロジックは比較の操作で異なる結果を返すかもしれない。あるいは、モニタプログラムそのものがロードされた番地が値を読み出す場所であった場合にも、同様の結果が生じうる。
再入性に関するバグ:静的変数を誤って"動的な"スレッド局所な記憶域の代わりに用いると、多くの場合再入性に関する問題が生じる。