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

<< Multiprocess Source files >>