When I was studying assembly programming at the university, simulators were very popular. A simulator is a program which in our case simulated an 8080 microprocessor. We could write our code in a safe environment were we could single-step, set breakpoints etc. Today I have the QEMU which simulates e. g. an ARM-environment running on my Linux desktop, which is actually running as a virtual machine on my Windows PC. But I really don’t use simulators that much. Probably because I have better alternatives.
If you are writing code for a small Linux system, you may find debugging a little crude. You may compile on a host or on the target, each with their challenges. Most Linux developers also use a Linux host (at least in ...