Blog

Linux core dump analysis

One of the most effective ways to identify problems in applications that crash is through core dump analysis. Core dump is a disk file that contains an image of a process’s memory at the moment of its termination, generated by the Linux kernel when processing some signals like SIGQUIT, SIGILL, SIGABRT, SIGFPE and SIGSEGV. For […]

Blog

Tracing the Linux kernel with ftrace

Tracing is a useful technique to find bugs in software, and ftrace is the tracing framework built into the Linux kernel. But before we start talking about ftrace, let’s define what tracing is. What is tracing? Tracing is the specialized use of logging to record information about a program’s flow of execution. You know when […]

Blog

Finding memory bugs with AddressSanitizer

AddressSanitizer (ASan) is an instrumentation tool created by Google security researchers to identify memory access problems in C and C++ programs. When the source code of a C/C++ application is compiled with AddressSanitizer enabled, the program will be instrumented at runtime to identify and report memory access errors. But what are memory access errors and […]

Blog

GCC extensions to the C language

The GNU Compiler Collection (GCC) provides several language features not found in ISO standard C. As I write this article, GCC has more than 60 different extensions that change the behavior or add functionality to the C language (and also C++). Some of these extensions are very interesting, others are a little bit confusing and […]

Blog

Using containers on embedded Linux

Would it be a good idea to use containers on an embedded Linux system? Some time ago I wrote an introductory article on Linux containers. I mentioned in the article that there are already several embedded Linux distributions based on containers, including Linux microPlatform from Foundries.io, Torizon from Toradex and balenaOS from balena. What these […]