OpenOCD is the Open On-Chip Debugger. It aims to provide debugging, in-system programming and boundary-scan testing for embedded target devices.
It has Jim Tcl onboard and exposes its functionality as Tcl commands. Configuration, automation, communication and more are done using Tcl.
A very versatile tool, it allows (amongst others) ARM devices to be debugged/programmed using gdb over USB/JTAG/SWD/...