I agree debuggers are pretty relevant to most people that program around these stages of programming. If you're programming on linux I'd suggest that the basic resources like gdb have good potential. From my understanding I did have to learn other things like file types and settings however I've gotten good use from this. On linux I run ld for linking and object files that gdb uses for assembly debugging. I've also noticed for people that use alot of .bin files that bochs is another common option. Other than that just a standard makefile and that's about how I debug code here.
This is the gdb function file I use
From prompt
sudo gdb
gdb> source -s -v gdb.config
gdb.config
define settings1
add-symbol-file boot.o 0x7c00
target remote | qemu-system-i386 -S -hda os.bin -gdb stdio
end
define build1
add-symbol-file boot.o 0x7c00 \
y
end
define build2
target remote | qemu-system-i386 -S -fda os.img -gdb stdio
end
If there's anything else you'd like details on let me know