Debugging your own code can be a repetitive and time-consuming process. Debugging someone else’s code, however, can be even trickier, if not impossible, and debugging platform Rookout released functionality this week that allows developers to do just that. Providing what it says equates to “X-ray vision” into third party code, Rookout expands upon its core functionality, which enables developers to set breakpoints in running production code to see what’s going on, and now gives them the ability to set breakpoints in what would otherwise remain black boxes.
Rookout CEO Shahar Fogel explained in an interview that the product gives developers a shortcut through what is otherwise a tedious process.
“If you think about the ways that engineers usually go about resolving issues or understanding what’s really happening within their application, it’s just around adding more and more log lines, hoping that it’s in the right place, pushing it to the CI/CD, waiting for the deployment cycle, seeing the data, and then starting to analyze it and make sense of it,” said Fogel. “With Rookout, you attach our SDK, and once it’s deployed throughout your application, whether it’s a monolith or a cloud native application, it’s distributed across all instances of the application. Once you decide what you want to bring, we automatically fetch it for you upon invocation of that line of code.”
Fogel emphasizes that Rookout does all this without interrupting the normal performance of the application or needing to redeploy. Instead, Rookout uses an agent to listen to the code at the “non-breaking breakpoint” set by the developer and return the results. The Rookout SDK currently supports Java, .NET, Python, Node.js, and Ruby, which Fogel says accounts for a majority of the back-end market, but is also working on adding support for C and C++ in the near future.
With Rookout’s latest feature addition, this capability is extended into those third party black boxes, by way of bytecode manipulation.
“With more and more open source, third party libraries, SaaS vendors, APIs, dependencies, and service mesh, especially in distributed environments, it’s very difficult for you to understand what’s going on in the application as a whole,” said Fogel. “We enable you to debug up the stack, to place breakpoints in these other portions of code, which you don’t have the source code for. We want to give back engineers that independence to do whatever they need and to understand what’s really going on without external dependencies.”
When working with third-party code, the developer will likely not have access to the source code, so instead they look at a stack trace to determine where to set the breakpoint. Once that breakpoint is set, upon the next execution of that code, Rookout collects and exposes local variables, function arguments, tracing data, and call stack to the developer, to help them debug their application.
Feature image via Pixabay.