New Debugging Initiatives for Today's New IoT World
December 03, 2018
Blog
Devices must be connected. Devices must perform their function reliably, but also provide metrics to back end equipment for analytics, machine learning, and business intelligence.
If you’re a software developer, you are likely all too familiar with the convergence that has occurred between embedded and enterprise programming environments. Devices must be connected. Devices must perform their function reliably, but also provide metrics to back end equipment for analytics, machine learning, and business intelligence. The embedded programmers are no longer siloed into C/C++ programming for embedded real-time operating systems. The merging of development and cloud application environments into the world known as IoT has placed new demands on programmers, their skill sets, and time to revenue.
New Generation Debugging
The mash-up of embedded and cloud has created an unfamiliar and challenging environment for today’s developers. Much time and energy has been spent developing software platforms, applications, and modules for creating an end-to-end IoT system, but little focus has been paid to enhancing debugging. OzCode is a company aiming to change the paradigm and make debugging more efficient and have announced an innovative Debugging-as-a-Service environment aimed at making development faster, more efficient, and more correct.
Omer Raviv, Co-Founder and CTO of OzCode is leading the charge. “With today’s time-to-revenue pressures, companies are looking at ways to make development more efficient,” Raviv said. “The debug phase is where the most ROI is to be gained. Fifty percent of development time is spent debugging, and the process involves a lot of guesstimation and logging assertions in hopes of finding the root cause of issues. Debugging production code in a real environment is also nearly impossible. These are the things OzCode is addressing and we’re packaging our solution as a service.”
Four Pillars
Omer mentioned OzCode is doing this based on four pillars:
- Time Travel – ability to pinpoint the exact moment of failure with the ability to travel back and forth in time during execution.
- Prediction – Omer calls this “prebugging.” This involves the ability to perform what-if analysis within a cloud environment then being able to formulate a prediction based on the execution. This allows you to validate a bug fix prior to re-deployment.
- Collaboration – Much the same way other engineering tools are becoming social, OzCode brings the social experience to debugging by capturing a debugging session with a sharable link to show the debugging session and discuss the problem and solution options.
- Root cause analysis – Providing full featured debugging tools in order to find the core issue from the observations during execution.
Snapshots Instead of Breakpoints
Perhaps the most maddening of all issues involves production code breaking and the issue cannot be reproduced in the lab. The classic approach of setting a breakpoint and looking around is not an option. OzCode uses the concept of a “snapshot” – a snapshot doesn’t stop execution – it simply collects the environment leading up to and after it. This snapshot can be used from a production environment to perform analysis without causing service disruption.
Embedded Extensions?
OzCode can be used for C#, .NET, .NET4, Windows, Linux, and MacOS. Soon Javascript will also be available. When asked about extending the experience down to the embedded environments, Omer mentioned the roadmap does include exploration and innovation for debugging right down to the embedded sensor. “The ultimate goal is an end-to-end debugging experience. The first part is access through a web browser. Analysis of microservices, angular or react apps in a browser into whatever is running on the server side. Interactions are recorded and debugging happens into and through the callbacks. It’s an IoT world and the long term goal is to allow you to debug end-to-end even on an edge device running native languages and RTOS.
Summary
Using OzCode is pretty easy. If you’re on an Azure platform, you install the Azure DevOps extension and everything else where the debug environment happens automatically. Source code integration isn’t necessary, but it’s supported if that’s an option. It’s sold as a yearly subscription per seat and free trials are available.
“We want to make OzCode to debugging what Github is to coding,” Omer mentioned. “A visual language for debugging and display of source code – piecing the end-to-end code used in execution into a visual experience.”