Instrumentation-based debugging offers an alternative to classical JTAG/SWD probes for embedded firmware. The Scrutiny Debugger framework — an open-source embedded library plus server and clients — lets you pipe data through existing peripherals (UART, CAN, USB CDC) to get real-time variable monitoring, trigger-based datalogs synchronized with firmware tasks, and Python-driven Hardware-In-the-Loop (HIL) testing. Key techniques covered include mocking IOs, exposing hardware registers via linker scripts, synchronizing firmware-triggered graphs with oscilloscopes via GPIO callbacks, and piggybacking custom commands over the Scrutiny protocol. The Python SDK enables scripted access to any firmware variable by its debug-symbol path, making automated testing feasible without a debug probe.