1. A system comprising: at least one processor; and a debug viewer executing on the at least one processor, wherein the debug viewer: retrieves a snapshot taken during execution of an application and containing local variable values and call stack data; retrieves a performance metric obtained during execution of the application; displays an interactive time line in a debug user interface, the interactive time line comprising both a first performance indicator derived from the performance metric and at least the snapshot, wherein the first performance indicator and the snapshot are rendered as interactive elements on an interactive timeline, such that a user is enabled to select the performance indicator of the snapshot to trigger a display of underlying data associated with the first performance indicator of the snapshot, when a corresponding interactive element is selected from the interactive timeline; displays a field for receiving user input that is operable to define one or more conditions for a subsequent snapshot to be taken during execution of the application; displays a field for receiving additional user input that is operable to define one or more snapshot definitions for data to be collected during the subsequent snapshot; receives the user input for the one or more conditions and the additional user input for the one or more snapshot definitions; prior to a subsequent execution of the application, automatically inserts a new snapshot source code into the application, wherein the new snapshot source code may be inserted by automatically traversing the application source code to identify the one or more conditions for a subsequent snapshot to be taken; monitors the application for the one or more conditions during the subsequent execution of the application; and detects, upon the subsequent execution of the application, that the one or more conditions has been satisfied, triggers the subsequent snapshot to collect data based on the one or more snapshot definitions.