This paper provides an overview of common debug solutions including hardware based debugging, system checkpoints, and source-level debugging. Firmware specific concepts such as status codes, DEBUG/ASSERT macros, and the UEFI debug protocol are introduced. This article also demonstrates source-level debugging support using AMI and Intel solutions, comparing them to hardware-based alternatives in various scenarios.