GDB, KGDB & JTAG
GDB, KGDB, and JTAG are the debugging tools embedded engineers reach for when BMS firmware misbehaves on real silicon — single-stepping through ISRs, inspecting register state, dumping memory while the pack is energized. As a hard skill it requires fluency in GDB scripting, comfort with JTAG/SWD probe setup (Segger J-Link, OpenOCD), understanding of the ARM Cortex-M debug architecture, and the patience to bisect a heisenbug across thousands of CAN-bus messages. Firmware engineers apply this when chasing a rare BMS reset that only shows up at low SoC, when reverse-engineering a vendor microcontroller's undocumented peripheral, or when bringing up a brand-new pack controller PCB.