1. Overview
  2. Debugging workflow
  3. Debugging workflow: CI
  4. Basic interface
  5. Visualizing control flow
  6. Call stacks
  7. Explaining dataflow
  8. Multiprocess
  9. Search box
  10. Source files
  11. Condition and print expressions
  12. Toolbox
  13. Alerts
  14. Application logs
  15. Callees
  16. View operators
  17. Notebook
  18. Instruction execution
  19. Javascript
  20. Browser UI integration
  21. Screenshots
  22. Additional views
  23. GDB
  24. System debug info
  25. Compiler issues
  26. The Pernosco vision
  27. Related work

Search box

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.