Recently my team and I have run into a lot of issues in our code that require a good debugging solution. Unfortunately, however, we haven't found a good way of setting breakpoints and stepping through our code to find out where our issues lie.
I was attracted to GDB, since I've used it in the past for general-purpose machines (i.e. i86 architecture), but I'm fairly new to the embedded world, so I'm not sure how to use a debugger for ARM embedded processors. I installed the GNU ARM bare metal toolchain (arm-none-eabi) which includes a version of GDB specific to ARM processors, but I have no idea how to set it up properly so that I can see what's going on with my external device (i.e. a NUCLEO-F401RE board).
Could somebody please shed some light on the issue? Also, do I need external hardware like a JTAG interface in order to access information on the device (like register info or memory status), or can I do that using USB? Thanks in advance.