[[Property:title|Debugger]]
[[Property:weight|-8]]
[[Property:uuid|31c4857e-f19e-e9e3-b7db-d6c30515277f]]
A debugger is a tool that allows you to [[Execution commands|run]]  an application and view its state at any moment. This includes having information concerning the current [[Call stack tool|call stack]]  and the [[Object tool|state of objects]]  of the system, i.e. the values of their attributes. This kind of information can be used to spot objects that have invalid states, to see the consequences of the execution of a feature over an object state, and so on. 

The features of the EiffelStudio debugger include:
* Stopping the application in frozen features as well as in melted features
*  [[Step into a feature|Stepping into]]  features, [[Execute one line at a time|executing them one line at a time]] , or [[Step out of a feature|stepping out]]  of them 
* Setting [[Breakpoints|breakpoints]]  on-the-fly, while the execution is running 
*  [[Expression evaluation|Dynamic evaluation of expressions]]  
*  [[Breakpoints|Conditional breakpoints]]  
*  [[Stack overflow prevention|Stack overflow prevention]]  
* Classes can implement the [[Debug output|debug_output interface]]  and have their objects display a string in the debugger 
* Execution can be recorded to be replayed when execution is paused, use the [[Execution record and replay|execution replay mechanism]]  from the call stack tool interface, and have the debugging tools updated. 
* Debuggee objects can be stored/retrieved from the debugger, check the [[Debuggee's Object Storage|debuggee object storage mechanism]]  available from the objects tool, and watch tools' toolbar. 



