A few years ago I attended an NXP seminar where their ARM Cortex controllers where introduced. When asked 50% of the embedded software engineers didn't use in circuit debugging. It is usually possible to use in circuit debugging for open source tools but you have to ask yourself what you want to gain by in-circuit debugging versus the amount of money and / or time spend.
When it comes to the software which deals with hardware: Toggling leds or I/O pins maybe old fashioned but it is the least instrusive way to find out if a program passes a certain point or not. You don't want to break in an interrupt routine which controls some hefty MOSFETs. Using more I/O pins and a logic analyser (with deep memory and support for statistics) you can even do profiling to see how much time is spend in certain routines. The thing is that an in-circuit debugger can show what the software does but when dealing with peripherals / hardware the problem is usually getting the settings right. That involves reading the user manual and using an oscilloscope or logic analyser to check whether the peripheral behaves as expected. Other problems may be things like timing conflicts between interrupts. I doubt a low end in-circuit debugger can help to find such problems.
The rest of the software is just easier / cheaper to debug / verify on a PC. I do that for almost every embedded software project.
For checking status / diagnostics I always incorporate a command line interface. That is not only useful during development but also when a device is installed. Connect the serial port and with a few commands it is totally clear what a device is doing.
Ofcourse you can still run into a problem with a pointer going wrong or a division by zero during the development phase. Fortunately ARM controllers offer a fault handler interrupt. In debug builds I have the fault handler dump a stack trace to the UART which usually reveals the problem area quickly. In release builds I just have the controller reset itself.
Several year ago many embedded programmers didn't even use structured programming. Not too many years ago, the C/ASM troll threads were the opposite and most people would say that programming in assembler only was just as fast and readable as any C code. Progress marches forward. Certainly there are places were the debugger has it's limitations, but it's a great resource, especially for those people new to embedded programming or learning a new architecture. It's fine to read the manuals, but if you can step through the code even down to the assembly level while seeing the state of all the hardware registers, it's hard to imagine why you would avoid it.
I'm not certain what cost you are talking about here. The cost is adding a 6 pin header to your project for even just the prototype board. For the Cortex-M for example the programmers/debuggers for LPC, ST, TI, and Freescale are all less the $30. It's so simple and cheap and fast that I'm not certain how making up a separate environment for debugging on your PC could save you any time.
It's a useful tool. It's a cheap tool. It's difficult to understand why someone would avoid it unless they really want to stick with a specific programming tool and/or a semi supported or unsupported operating system.
Them's fightin' words! %-B
It was probably a little harsh and Thanks to nctnico for not stooping to my level.
I would not say harsh it is your opinion. There is a time and place for every tool just like there is a time and place for every chip. In all honesty it is my own fault for going against the norm and using a Linux OS on all my computers. That is a choice I made years ago well before the Windows 8 Monstrosity. It is not my fault that the companies don't really support the OS all that well. For the most part PIC works pretty well so does AVR. From what I hear ARM works pretty well to. The fact remains I still need to work around a lot of various issues because the support is always sub par compared to windows. For instance MPLABX is not the most pretty environment on Linux and I am not much of an IDE guy was just using it because it worked and I wanted to learn. AVR/ARM have great Linux compiler support however, AVR lacks a bit on the debugger side but it really lets me use the toolchain setup I learned to love on Linux. Never been much of an IDE guy. ARM seems to be pretty solid once you figure out all the separate pieces (still doing that). Either way I want to learn Embedded Electronics and make projects.
Right now I have invested $68 into PIC, $118 into AVR, and $20 on an Arduino. Hate the Arduino, PIC has a bad dev environment from my point of view even though it does work for the most part minus all the Netbeans bugs. Really like AVR but still trying to work out the kinks. Makes me wonder if I should have listed to everyone that was trying to point me to ARM but I always felt the chips may have been overkill for learning. So here I am looking into ARM's.
My ultimate goal is to find an architecture that works for me in the environment that I choose and to learn. So far I am not really there yet. Right now from what I can see ARM might just be what I am looking for if I can figure out all the pieces that is and even if it is overkill. It does seem to give tons of room to grow.
(Apologize trying to get back on topic so I don't confuse myself more)
The only real issues I see with ARM is finding the right dev board/chips aka. choosing a company to utilize.
The other issue is when I want to make my own board for a project as a hobbyist it could be tougher to do due to surface mount. For some reason soldering 64 pins seems a bit tough (in the case of the TI Sellaris I was recommended). This would also mean perf board is out of the question and I would have to get the board fabricated but this is down the road anyway.
So looking at the general options I have available...
TI Stellaris (good Linux support through gcc and openocd)
SM Discovery (horrid doc with semi decent Linux support)
Freescale Kenetis Freedom (Have no idea can't find much info "may be do to wrong search strings")
NXP (Solid Linux support through proprietary IDE "Not an IDE fan")
Those are really the options I can see and any help narrowing down a solid direction to head would be great and much appreciated.