Operations | Monitoring | ITSM | DevOps | Cloud

Debugging

Over the Air Updates for Embedded Linux Devices

Over-the-air (OTA) updates for Embedded Linux devices require the perfect collaboration of many complex and misunderstood components. With the risk of bricking devices always present, this is an area you want to understand well. Watch this webinar with Linux Tech Lead Thomas Sarlandie to learn how to implement a secure and reliable OTA update system.
Memfault

Zephyr Deep Dive: Ring Buffers

Zephyr includes many built-in features like stacks for networking and BLE, Flash storage APIs, and many kernel services. These components allow you to quickly get up and running with a project and maintain less code! Taking advantage of these is a huge win for small firmware teams and was a huge motivation in bringing Zephyr to my teams. This post covers Zephyr’s built-in ring buffer API, a component commonly used in producer-consumer scenarios.

Memfault

C++17's Useful Features for Embedded Systems

Recently, our team at Meteksan Defense is upgrading its development environment to use newer versions of many tools and programming languages. One of the more difficult transitions has been the upgrade of our C++11 code base to C++17 for our embedded applications. In this article, I will be showing some features of C++17 that can also be helpful in the embedded world. Note that the migration from C++11 to C++17 covers C++14 also, hence I will touch upon some aspects of it as well.

lightrun

Maximizing CI/CD Pipeline Efficiency: How to Optimize your Production Pipeline Debugging?

At one particular time, a developer would spend a few months building a new feature. Then they’d go through the tedious soul-crushing effort of “integration.” That is, merging their changes into an upstream code repository, which had inevitably changed since they started their work. This task of Integration would often introduce bugs and, in some cases, might even be impossible or irrelevant, leading to months of lost work.

lumigo

Faster Debugging with Collaborative Troubleshooting Tools

As developers we understand the critical role teamwork and collaboration play in solving complex problems. Often, it’s that second set of eyes that uncovers an additional issue or sheds light on the root cause of a stubborn bug. Effective collaboration becomes a critical factor in determining a team’s success or failure, especially when debugging or troubleshooting problematic issues within complex applications.

Memfault

OTA for Embedded Linux Devices: A practical introduction

A core belief of Memfault is that we can ship faster when we have good infrastructure in place. An essential piece of this infrastructure is tools to send firmware updates over the air. It enables the team to ship more often and spend more time building features. In this article, we look specifically at what is required to ship over-the-air firmware updates for Linux systems. A good OTA setup should allow you to quickly prepare updates and ship them with confidence.

lightrun

Code Instrumentation Practices to Improve Debugging Productivity

Code instrumentation is closely tied to debugging. Ask one of the experienced developers and they will swear by it for their day-to-day debugging needs. With modest beginnings in the form of print statements that label program execution checkpoints, present-day developers employ a host of advanced techniques for code instrumentation. When carried out in the right way, it improves developer productivity and also reduces the number of intermediate build/deployment cycles for every bug fix.

lightrun

Code Instrumentation in Cloud Native Applications

Cloud native is the de facto standard approach to deploying software applications today. It is optimized for a cloud computing environment, fosters better structuring and management of software deployments. Unfortunately, the cloud native approach also poses additional challenges in code instrumentation that are detrimental to developer productivity.

Memfault

Pocket article: Debug vs. Release Builds Considered Harmful

Separate “debug” and “release” builds are very common in embedded development. Typically the notion is improved debug capabilities (less aggressive compiler optimizations, more debugging information like logs) vs. highly optimized and hardened production release builds. I’m here to describe disadvantages to this practice, and why it might make sense to consolidate to a single build! Like Interrupt? Subscribe to get our latest posts straight to your mailbox.

lumigo

Debugging Containerized React Apps

In your lifetime as a frontend developer that works with React, you must have come across several issues with debugging a containerized React application. I bet you can relate, you’re certainly not alone. Containerization has become an integral part of best practices for software development teams that want to create, test and deploy applications quickly and efficiently. However, despite its advantages, it also comes with new challenges for debugging and troubleshooting applications.