Debuggers are "boring", just like compilers; they should just work, do their job, and not get in the way. So, how do we add "special sauce" to an allegedly "boring" product?

The Apple Principle: Make it simple to set up. We integrate the tools so that the users only need to make a few key choices; we do the work for you. No need to write configuration files and figure out what all the configurable options are.

Do the basic job well: Debuggers have been around for a while, so there are expectations as to what a debugger's basic features are. Breakpoints, call stack, CPU register display etc. are expected, and of course are implemented.

Do the "extra credit work" that users desire: With the complexity of modern microcontrollers which have aplethora of peripheral subsystems, there are typically hundreds of I/O registers that affect the operation of your programs. If an I2C transaction did not work correctly, was it a hardware issue? Protocol handshaking problem? Software coding problems? If the I2C I/O registers were not set up correctly, it would have affected the I2C operations. Did the I2C initialization code get called? Maybe there is a companion peripheral that also needs to be set up? How do you tell?

We, of course, provide the most obvious solution:

Our JumpStart Debugger includes an "I/O Peripheral" tab allowing you to look directly at the content of the microcontroller's I/O registers. The debugger understands the fields within the I/O registers, and displays them accordingly.

This attention to users' needs and providing simple-to-use solutions make ImageCraft stand out from other companies. The JumpStart debuggers are fully integrated with their respective compiler tools. Try our fully functional demos, and see for yourself.