The Value Of Pernosco
The Pernosco omniscient debugger creates value by solving common problems in software development:
Increase debugging productivity
Debugging is often tedious and a chore. Pernosco's advanced features make debugging fast and fun, letting you get back to building your software.
- Pernosco's UI is designed from scratch to put the entire program history at your fingertips. Whether you want to follow control flow through a function at a glance or track an incorrect value back to its source with a single click Pernosco has the features necessary to quickly find the root cause of bugs.
- Reproduce a bug once (or have your QA team, CI system, or even a customer do that for you) and debug at your leisure. All program state is captured and you can look through it as many ways or times as you like.
- Instead of tediously setting breakpoints on functions or lines of code and repeatedly continuing through program execution, simply search for the code you are interested in. Apply condition or print expressions to filter out irrelevant executions or log relevant information at that moment directly into the Pernosco UI.
- Take notes directly in Pernosco as you work on identifying the root cause of the bug. Need help from a teammate? Just write your questions in the notebook and send a link to a coworker for a quick consult. Your colleague can jump right in to the spot where you were, answer your question, and get back to their own work.
- Fall back to a supercharged gdb if you prefer a more traditional interface. It's the same gdb you're already familiar with, except that it can go forwards or even backwards in time instantaneously, and is integrated with the surrounding Pernosco UI too.
You can see a more exhaustive rundown of Pernosco's feature set here.
Fix difficult-to-reproduce bugs
Important issues can be blocked for days or even longer because engineering can't reproduce the problem. Few engineers are volunteering to tackle that bug that only shows up in one in a thousand test runs. With Pernosco, capture the bug just once and you can get to the bottom of the issue without reproducing it again.
- Feed traces you produce, or that QA or an external customer produces, or that are produced by your continuous integration system or some other automated system into Pernosco and have everything you need from the issue reporter to debug the problem. Stop going back and forth asking for clarifications on the steps to reproduce or delivering speculative patches based on an incomplete understanding of the problem.
- Pernosco's advanced UI will help you make quick work of the most difficult types of intermittent bugs: race conditions and memory safety issues.
- Features such as chaos mode can be used during the recording phase to inject extra non-determinism into your software and tease out rare faults.
- Have a bug that only reproduces with logging disabled? Capture it with logging disabled and then use after-the-fact logging to have your cake and eat it too.
Fix CI test failures
Whether a failure on your CI system indicates a real regression or a flakey test, Pernosco gives you tools to deal with them.
- Ingest traces produced by the CI system and accompany failure notifications with a debugging session so that you can quickly diagnose your regression and get your code back on track soon.
- Never worry about configuring your development machine to match the CI system exactly in order to reproduce an issue. Simply get a trace produced in CI and debug it on any machine with a web browser.
- Pernosco's advanced debugging features have the power necessary to get to the root cause of common causes of flakey tests, such as race conditions, with only a single trace.
- Can't spare the time to debug a pesky intermittent failure before a deadline? Just hold on to the trace and you can debug it later. Traces are self-contained and can be stored indefinitely for future investigation.