UnoArduSim provides a virtual target Uno board and allows the user to choose, and interface to, one or more of several types of virtual input/output devices. These include typical hobbyist DC gear-motor, stepper-motor, and servo motors, generic serial devices with selectable baud rate, generic I2C and SPI slaves, an SD card with SPI interface, digital and analog waveform generators, piezo speakers, LED's. push-buttons, resistive pull-ups and pulldowns, and a slider potentiometer. All devices are electrically (and mechanically) modelled.
You can load and edit (and correct) your Arduino program, then run, run-to, halt, step-into, step-over, and step-out-of while watching all accessible program variables and monitoring pin levels (and even pin waveforms). Simple and clear parse and execution error messages are provided.