Traditional debugging techniques, from the insertion of print statements to the use of breakpoints, are inapplicable or unsuitable for fielded embedded systems such as telecom switches where the delay of a single thread can interrupt service or bring down a system with potentially widespread financial, security, and safety ramifications. Yet practical, powerful techniques do exist that allow developers and field technicians to safely, and with strictly limited intrusiveness, interact with in-use embedded systems.