Pregunta

Soy la depuración de un controlador para Linux (en concreto servidor de Ubuntu 9.04), y hay varias sentencias printf en el código.

¿Dónde puedo ver el resultado de estas instrucciones?

EDIT1: Lo que estoy tratando de hacer es escribir al núcleo utilizando el sistema de archivos proc. El código de impresión es

static int proc_fractel_config_write(struct file *file, const char *argbuf, unsigned long count, void *data)
{
    printk(KERN_DEBUG "writing fractel config\n");
    ...

En kern.log, veo el siguiente mensaje al intentar sobreescribir el archivo / proc / net / madwifi / ath1 / fractel_config (con el tiempo, por supuesto, variar).

[ 8671.924873] proc write 
[ 8671.924919] 

Cualquier explicaciones sobre los defectos?

¿Fue útil?

Solución

Depende de la distribución, pero muchos utilizan klogd(8) para obtener los mensajes del kernel y, o bien hacer un registro en un archivo (a veces /var/log/dmesg o /var/log/kernel) o para el registro del sistema a través de syslog(3). En el último caso, donde las entradas del registro terminan dependerá de la configuración de syslogd(8).

Una nota sobre el comando dmesg:. Los mensajes del núcleo se almacenan en un buffer circular, por lo que grandes cantidades de salida será sobrescrito

Otros consejos

Muchas veces los mensajes de nivel KERN_DEBUG se filtran y hay que aumentar el nivel de registro de forma explícita. Se puede ver lo que los valores predeterminados del sistema están examinando /proc/sys/kernel/printk. Por ejemplo, en mi sistema:

# cat /proc/sys/kernel/printk
4       4       1       7

El primer número muestra el nivel de registro de la consola es KERN_WARNING (ver proc (5) páginas man "noreferrer nofollow" para más información). Este medio de KERN_NOTICE, KERN_INFO, y los mensajes KERN_DEBUG serán filtrados desde la consola. Para aumentar el nivel de registro o nivel de detalle, el uso dmesg

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

A continuación, establecer el nivel de 7 (KERN_DEBUG) permitirá a todos los niveles de los mensajes que aparecen en la consola. Para automatizar este, loglevel= complemento N a los parámetros de arranque del kernel, donde N es el nivel de registro que desea ir a la consola o ignore_loglevel para imprimir todos los mensajes del núcleo a la consola.

Usted obtendrá la salida con el comando dmesg

dmesg Salidas todos los mensajes del kernel. Encontrar a sus mensajes deseados sería difícil. Mejor uso dmesg y grep combinación y el uso de una etiqueta específica conductor en todas sus mensajes printk. Que facilitará en la eliminación de todos los mensajes no deseados.

printk("test: hello world")

dmesg | grep test

Yo tenía este problema en Ubuntu 11.10 y 10.04 LTS, en la antigua edité /etc/rsyslog.d/50-default.conf, a continuación, reinicia rsyslog usando "sudo service rsyslog reinicio" a rsyslogd reinicio. Entonces funcionó.

Tenga en cuenta que Ubuntu usos * r * syslogd, no syslogd.

Se podría tratar de un nivel más alto que KERN_DEBUG, por ejemplo KERN_INFO. Según la configuración de los mensajes de menor prioridad que no se muestren.

En centos (al menos en centos 6.6) la salida será en / var / log / mensajes

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top