[[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.