Software bugs that make it to market not only cause incorrect system behavior and low system availability but also result in unhappy (and fewer) customers. Unfortunately, conventional debugging methods can themselves interfere with the availability, performance, and correct behavior of the affected system. This paper examines debug and information-gathering techniques that can maintain system availability while generating artifacts that help diagnose and resolve software failure.