Je débogage d'un pilote pour Linux (spécifiquement ubuntu Server 9.04), et il existe plusieurs instructions PrintF dans le code.
Où puis-je voir la production de ces déclarations?
Edit1: Qu'est-ce que j'essaye de faire, c'est écrire au noyau à l'aide du système de fichier PRO. Le code d'impression est
static int proc_fractel_config_write(struct file *file, const char *argbuf, unsigned long count, void *data)
{
printk(KERN_DEBUG "writing fractel config\n");
...
À Kern.log, je vois le message suivant lorsque j'essaie d'écraser le fichier/proc/net/filet/madwifi/ATH1/fractel_config (avec une durée variable bien sûr).
[ 8671.924873] proc write
[ 8671.924919]
Des explications?
À plusieurs reprises KERN_DEBUG
Les messages de niveau sont filtrés et vous devez augmenter explicitement le niveau de journalisation. Vous pouvez voir ce que les valeurs par défaut du système en examinent /proc/sys/kernel/printk
. Par exemple, sur mon système:
# cat /proc/sys/kernel/printk
4 4 1 7
le premier numéro indique le niveau de journalisation de la console est KERN_WARNING
(voir proc (5) pages man pour plus d'informations). Ça signifie KERN_NOTICE
, KERN_INFO
, et KERN_DEBUG
Les messages seront filtrés à partir de la console. Pour augmenter le niveau de journalisation ou la verbosité, utilisez dmesg
$ Sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7 4 1 7
Ici, régler le niveau à 7 (KERN_DEBUG
) permettra à tous les niveaux de messages apparaître sur la console. Automatiser cela, ajoutez loglevel=
[~ # ~] n [~ # ~] sur les paramètres de démarrage du noyau où n est le niveau de journalisation que vous souhaitez aller sur la console ou ignore_loglevel
Pour imprimer tous les messages du noyau à la console.
Vous obtiendrez la sortie avec la commande dmesg
DMESG Sorties tous les messages du noyau. Trouver vos messages souhaités serait difficile. Meilleure utilisation dmesg et grep Combinaison et utilisez une étiquette spécifique du pilote dans tous vos messages printk
. Cela facilitera l'élimination de tous les messages indésirables.
printk("test: hello world")
dmesg | grep test
J'ai eu ce problème sur Ubuntu 11.10 et 10,04 lts, sur l'ancien que j'ai édité /etc/rsyslog.d/50-defaulog.conf, puis redémarrait RSYSLOG en utilisant "Sudo Service RSYSLOG redémarrer" pour redémarrer RSYSLOGD. Alors ça a fonctionné.
Notez que Ubuntu utilise * R * syslogd, pas syslogd.
Vous pouvez essayer un niveau supérieur à Kern_Debug, par exemple kern_info. En fonction de votre configuration, les messages de priorité les plus bas peuvent ne pas être affichés.
Dans Centos (au moins en Centos 6.6), la sortie sera dans/var/log/messages