Users often know the name of something they're interested in, e.g. a function whose executions they wish to examine. In traditional debuggers the user would set a breakpoint on the function. In Pernosco, the user enters the name of the function and we show a list of executions of that function before and after the current point in time, with their parameters and return values (where possible). Naturally, clicking on one of those executions shifts the focus to that point in time.
Rather than have dedicated UI for each kind of textual search users might want, we have taken inspiration from Web search engines, where a single text input can be interpreted in many different ways and the engine returns results that are predicted to be most relevant. Thus we have a prominent "search box" at the center top of our interface. As the user types into the search box, we produce candidate query results and show them in a list, with the actual results of each query shown in miniature. Because we have indexed debuginfo offline, we can find all symbols containing a given substring, and show results for each symbol, with very low latency.
Users can also type the names (or parts of names) of source files into the search box to open them in Pernosco, including at specific lines using ":line-number" syntax.
Typing (parts of) the names of Pernosco views (e.g. "gdb") into the search box is a quick shortcut to open new views. The search box serves as a sort of command line.
A lot more functionality could be exposed through the search box, in a scalable and discoverable way. The suggestion list lets us advertise and preview new features. Like Web search engines, observing user behavior will let us improve our relevance heuristics over time.