Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

347
Vistas
¿Cómo imprimir el seguimiento de la pila de subprocesos actual dentro del kernel de Linux?

Me gustaría poder imprimir el seguimiento de la pila de un hilo en el kernel de Linux.

En detalles: quiero agregar código a funciones específicas (por ejemplo swap_writepage() ) que imprimirá el seguimiento completo de la pila del hilo donde se llama a esta función. Algo como esto:

 int swap_writepage(struct page *page, struct writeback_control *wbc) { /* code goes here to print stack trace */ int ret = 0; if (try_to_free_swap(page)) { unlock_page(page); goto out; } if (frontswap_store(page) == 0) { set_page_writeback(page); unlock_page(page); end_page_writeback(page); goto out; } ret = __swap_writepage(page, wbc, end_swap_bio_write); out: return ret; }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El kernel de Linux tiene una función muy conocida llamada dump_stack() aquí , que imprime el contenido de la pila. Colóquelo en su función de acuerdo con la información de la pila.

over 4 years ago · Santiago Trujillo Denunciar

0

@rakib tiene toda la razón, por supuesto.

Además, me gustaría señalar que se pueden definir macros simples y elegantes que ayudan a imprimir información de depuración cuando sea necesario. A lo largo de los años, he puesto estas macros y rutinas de conveniencia en un archivo de encabezado; puede consultarlo y descargarlo aquí: "Un encabezado de conveniencia" .

Hay macros/funciones para:

  • haga impresiones de depuración junto con la información de nombre de función / línea # (a través de printk() habitual o trace_printk()) y solo si el modo DEBUG está activado
  • volcar la pila en modo kernel
  • imprime el contexto actual (proceso o interrupción junto con banderas en la forma que usa ftrace )
  • una simple macro de afirmación () (!)
  • un DELAY_LOOP intensivo en CPU (útil para equipos de prueba que deben girar en el procesador)
  • un equivalente a la funcionalidad de suspensión del modo de usuario
  • una función para calcular el delta de tiempo dadas dos marcas de tiempo (estructuras de valor de tiempo)
  • convertir decimal a binario, y
  • un poco mas.

Vaya :-)

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda