A debugger can be very useful for finding certain bugs (memory faults, segmentation violations and bus errors) and for tracing certain parts of code.