Oh boy! Programming languages. Almost on the edge of politics.
I use an Integrated Development Environment (IDE) like MPLAB for PIC controllers, CodeWarrier for M9S12 series both of which with the appropriate programmer allow In Circuit Debugging (ICD) and single stepping either C language statements or even down to the assembler level. The advantage of being able to see the assembler is that it's possible to see how similar C code generates faster/slower or larger/smaller assembler to do the same thing.
On the PC side I use Object Pascal as in Delphi from within RAD Studio.
But similar to Delphi I'm lately starting to use Lazarus.
Lazarus is a professional open-source cross platform IDE powered by Free Pascal
www.lazarus-ide.org
Why Lazarus?
1. It's free and similar to Delphi Version 6 or 7.
2. Create command line programs or graphical desktop programs.
2. Write once, compile anywhere which means the same software works on PCs, MACs, Linux or even ARM based embedded systems.
For example this program compiles and runs on both my PC and on the LinuxCNC machine. This stuff is metal working related. I've done a bunch that isn't and compiles and runs on a Raspberry Pi or Beaglebone Black.
To give credit this program started out as a C language command line program on Linux written by JonElson. I took his code and converted it to a GUI based Lazarus Pascal program since I detest command line applications. My intention was (still is but project #42) to convert all his C programs into Pascal and create the equivalent of a single program with menu selections for the type of CNC operation. So boring, facing, slotting etc. But it will be a while. The current Lazarus version that I moved over from WIN-7 to the new WIN-10 system last year has issues so I need to update and just haven't gotten around to that yet.