Debugging and logging are both inseparable aspects of any software system during it's development as well as in the deployment stage. These tools greatly assist the developer & support teams to quickly find a solution.

Debugging

In the development process of a feature rich software like RDK, debugging the code or modules bears great significance.

An IDE provide great deal by helping to solve certain debug functionalities but when working with a Set-top, it is also important to have debuggers that can collect core dumps and real time code traces.

RDK supports following tools for making the debugging task easier for developers.

Logging

Presentation of system events, errors and application traces altogether in form of console messages or persistent log files constitutes the logging process in RDK.

Generating and reading system logs is an important aspect of system administration. The information in system logs can be used to detect hardware and software issues as well as application and system configuration errors. This information also plays an important role in assessing device health, security loopholes and incident response.

There are multiple levels of logging supported by RDK right from having the native Linux syslog (or more recently : journal logs) facility to having a dedicated logging facility such as RDK logger library.

RDK Logger

Description

RDK Logger is responsible for centralizing logging feature which otherwise was done by printf or other similar functionalities. It provides enable/disable log feature as well as defines logging levels thus providing a way to control amount of outgoing log messages. Available as a library, it can be easily plugged into different application to enable them in creating logs in a way that is common among the RDK system.

Capabilities

A detailed description on the RDK logger component can be found here: RDK Logger

Systemd Journals

systemd has its own logging system called the journal; therefore, running a syslog daemon is no longer required.