Impressions de débogage du noyau Linux ?
-
13-11-2019 - |
Question
Existe-t-il une meilleure façon de déboguer les impressions dans le noyau Linux ?
En ce moment, je jonche le code avec :
printk(KERN_DBG "%s:%d - %s() <message>", __FILE__, __LINE__, __FUNCTION__ );
Ce qui n'est pas très propre.
Il devrait y avoir un moyen pour que toute la rangée soit #ifdef
:ed d'une manière gentille.
La solution
Utiliser
/* At the top of the file, before any includes */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/printk.h>
/* in code... */
pr_devel("foobar happened\n");
comme base (la pratique standard).Vous pouvez alors ajouter __FILE__
ou __LINE__
au pr_fmt
définition si vous en avez besoin.
Autres conseils
Si cela est pour le débogage rapide, il suffit d'imprimerk () fonctionne bien.
S'il s'agit de déboguer dans une situation de production plus de production, peut-être utiliser PR_DEBUG (). Les messages peuvent donc être activés au moment de l'exécution.
Quoi qu'il en soit, ("% s: xxx", func ) est généralement suffisant.Ces noms de fichiers et numéros de ligne deviendront ennuyeux très bientôt.C'est aussi pourquoi vous n'avez trouvé aucune solution «standard» - car il n'y en a pas.