Question

Je suis le débogage d'un pilote pour Linux (en particulier du serveur ubuntu 9.04), et il y a plusieurs déclarations printf dans le code.

Où puis-je voir la sortie de ces déclarations?

EDIT1: Ce que je suis en train de faire est d'écrire au noyau en utilisant le proc système de fichiers. 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");
    ...

Dans kern.log, je vois le message suivant lorsque je tente de remplacer le fichier / proc / net / madwifi / ATH1 / fractel_config (avec plus ou moins de temps bien sûr).

[ 8671.924873] proc write 
[ 8671.924919] 

Les explainations?

Était-ce utile?

La solution

Il dépend de la distribution, mais beaucoup utilisent klogd(8) pour obtenir les messages du noyau et soit les enregistrer dans un fichier (parfois /var/log/dmesg ou /var/log/kernel) ou dans le journal du système via syslog(3). Dans ce dernier cas, où les entrées du journal finissent dépendra de la configuration de syslogd(8).

Une note sur la commande dmesg. Les messages du noyau sont stockés dans une mémoire tampon circulaire, de sorte que de grandes quantités de sortie ECRASEES

Autres conseils

Plusieurs fois des messages de niveau KERN_DEBUG sont filtrés et vous devez augmenter explicitement le niveau de journalisation. Vous pouvez voir ce que les paramètres par défaut du système sont en examinant /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 journal de la console est KERN_WARNING (voir noreferrer proc (5) pages de manuel pour plus d'informations). Ce moyen KERN_NOTICE, KERN_INFO et messages KERN_DEBUG seront filtrés à partir de la console. Pour augmenter le niveau de l'exploitation forestière ou verbosité, utilisez dmesg

$ sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7       4       1       7

Ici, le réglage du niveau 7 (KERN_DEBUG) permettra à tous les niveaux de messages apparaissent sur la console. Pour automatiser cela, loglevel= add N aux paramètres de démarrage du noyau où N est le niveau de journal que vous voulez aller à la console ou ignore_loglevel d'imprimer tous les messages du noyau sur la console.

Vous obtiendrez la sortie avec la commande dmesg

dmesg sorties tous les messages du noyau. Trouver vos messages souhaités serait difficile. Une meilleure utilisation dmesg et grep combinaison et utiliser une étiquette spécifique du conducteur dans tous vos messages printk. Cela facilité à éliminer 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 je /etc/rsyslog.d/50-default.conf édité, puis redémarré rsyslog en utilisant la commande "sudo le service rsyslog restart" pour redémarrer rsyslogd. Ensuite, il a travaillé.

Notez que les utilisations Ubuntu * r * syslogd, pas syslogd.

Vous pouvez essayer un niveau supérieur à KERN_DEBUG, par exemple KERN_INFO. En fonction de votre configuration les plus bas des messages prioritaires risquent de ne pas être affiché.

Dans CentOS (Atleast dans CentOS 6.6), la sortie sera dans / var / log / messages

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top