During complex debugging sessions developers need to record their progress. Pernosco provides first-class support for this in the form of the notebook. When a user changes focus to a new moment in time (or a different stack frame at the same moment), a note is automatically added to the notebook to record the new focus. We also add a note when the user selects a variable value to display. Initially the note is temporary and replaced at the next focus change, but the user just needs to click on it to make it persist. Users can add arbitrary text to the notes. Clicking on a note jumps to its moment. Developers can use the notebook to record where they have been in time and what they have learned.
Notes persist indefinitely and are continuously synchronized across all debugging sessions for a given recording. A developer can open multiple Pernosco windows for the same recording to simultaneously inspect different points in time, or to more efficiently use screen real estate. The notebook (being shared across all the windows) is a convenient way to coordinate work across those windows, e.g. by opening a new window and clicking on some specific note to jump to that moment.
The notebook facilitates collaboration. Information gathered by one developer can be recorded in the notebook to help another developer can carry on the analysis. Since notes are continuously synchronized, they also help developers work together in real time. Debugging can be social! The notebook also serves as archive of debugging history and knowledge for future reference.
Users recording their thoughts in the notebook also improves our ability to understand how people debug.