1. An apparatus comprising: at least one processor; a memory coupled to the at least one processor; a program residing in the memory; a debugger residing in the memory and executed by the at least one processor, the debugger debugging the program, the debugger comprising: a step mechanism for stepping through the program while debugging the program, the step mechanism comprising a granularity selection mechanism that allows a user to specify line step mode, statement step mode, and automatic selection of step mode according to at least one selection criterion.