How would you use JTAG/SWD, GDB, logging strategies, and core dump analysis to debug an embedded system?