Paquetes de debuginfo

Esta página contiene información sobre paquetes de informe de depuración y escollos comunes al respectos paquetes. Para utilizar información y una explicación de por qué los paquetes debuginfo son impotantes, consulte StackTraces.

comprobar su paquete debuginfo para utilidad

Un paquete debuginfo útil contiene símbolos despojados de binarios ELF (*.debug en /usr/lib/debug), así como el código fuente correspondiente (en /usr/src/debug). El guion que genera los paquetes es /usr/lib/rpm/find-debuginfo.sh; léalo para comprender básicamente cómo se generan. Si su paquete debuginfo no contiene ningún archivo, le faltan las fuentes o el tamaño de los archivos *.debug es inesperadamente pequeño (normalmente, *.debug son más grandes que el binario correspondiente del que se extrajo), es probable que su paquete tenga algo ausente. Sin embargo, no siempre es así; siga leyendo.

Paquetes de debuginfo inútiles o incompletos debido a problemas de empaquetado

Los paquetes de debuginfo inútiles o incompletos suelen deberse a fallos de empaquetado. Los fallos típicos que suelen manifestarse como paquetes de debuginfo sin archivos son:

  • El archivo de especificaciones o las rutinas de compilación del paquete eliminan explícitamente los símbolos de los binarios. Busque invocaciones de strip, install -s, ld -s o gcc -s, etc., y elimínelas (o los indicadores -s). El método para hacerlo varía; algunos ejemplos incluyen la aplicación de parches, el uso de %configure o un objetivo make que impida la eliminación, o la anulación de un comando de eliminación como, por ejemplo, make install STRIP=/bin/true

  • El paquete no está marcado como noarch, pero no contiene ningún elemento dependiente de la arquitectura (binarios nativos, rutas dependientes de la arquitectura, etc.). Los paquetes noarch verdaderos no contienen nada que rpmbuild pueda extraer de ellos, por lo que se espera que estén vacíos si falta BuildArch: noarch. En ese caso, convierta el paquete en noarch.

  • find-debuginfo.sh procesa solo los archivos ejecutables al ejecutarse; a efectos prácticos, se puede asumir que esto ocurre en segundo plano después de la sección %install. Asegúrese que todos los binarios ELF (ejecutables, bibliotecas compartidas, DSO) sean ejecutables al final de %install.

  • find-debuginfo.sh no procesa binarios setuid ni setgid. Hay un error en error registrado contra rpmbuild al respecto, pero hasta que se solucione en las distribuciones a las que va dirigido tu paquete, asegúrate de que todos tus binarios no tengan los bit setuid/setgid al final de %install y restáuralos en la sección %files usando %attr(...) /path/to/file

Fallas que se manifiestan como *.debug inesperadamente pequeños en el paquete debuginfo y/o archivos fuente ausentes:

  • El paquete se creó sin pasar`-g` a gcc o g+`. Sin `-g+, no se genera información suficiente para los paquetes debuginfo; asegúrese que se esté siendo utilizando.

  • Tenga en cuenta que las opciones predeterminadas CFLAGS y CXXFLAGS de la distribución ya contienen -g, por lo que, si se respetan, ya deberían estar en uso. De lo contrario, los paquetes debuginfo deficientes no son el único problema; es probable que el paquete se haya compilado sin las opciones de mejora de seguridad de las versiones recientes del compilador. Asegúrese de que $RPM_OPT_FLAGS se respete y se utilice.

  • strip -g fue utilizado en los binarios; consulte arriba para remedios posibles.

Paquetes de debuginfo inútiles o incompletos debido a otras razones

También pueden generarse paquetes de debuginfo vacíos en situaciones donde no existen fallos de empaquetado evidentes. A veces, esto se debe a limitaciones de find-debuginfo.sh, y a veces no. Algunos casos habituales:

  • Paquetes cuya única parte binaria dependiente de la arquitectura es una biblioteca estática o muchas de ellas

  • Paquetes R y Mono PORHACER: personas con conocimientos de R y/o Mono, verifiquen esto

Si desea deshabilitar la generación del paquete debuginfo inútil mientras espera mejoras en find-debuginfo.sh o si es poco probable que se pueda mejorar para producir un buen debuginfo para su paquete (por ejemplo, no hay archivos dependientes de la arquitectura, pero el paquete no es noarch debido a las rutas de instalación que usa), use %global debug_package %{nil} en el archivo de especificaciones y asegúrese de agregar un comentario al lado explicando por qué se hizo.

Ausencia de paquetes debuginfo

Es normal que las compilaciones de paquetes noarch no generen un paquete debuginfo. Si falta en otros casos (donde no se ha deshabilitado explícitamente), algo falla. Un ejemplo de esto es ausencia de la sección %build con algunas versiones rpmbuild.

No deje obsoletos los paquetes debuginfo

Si se elimina un subpaquete o se cambia de arch a noarch, el paquete -debuginfo asociado podría quedar obsoleto. Esto podría ser un problema si el repositorio fedora-debuginfo está habilitado durante la actualización del sistema. Sin embargo, dado que los paquetes debuginfo no tienen dependencias, se pueden instalar en paralelo y son útiles para el análisis de volcados de memoria; no los deje obsoletos.

Recursos