2010-11-15 18 views
8

me he encontrado a menudo la siguiente advertencia del BGF:¿Qué significa esta advertencia?

warning: .dynamic section for XXX is not at the expected address

donde XXX es el nombre de una biblioteca. Recientemente lo obtuve para libgobject-2.0.so. Mi aplicación usa GTK. gdb lo había lanzado sin problemas hasta ayer cuando sincronicé el último código del repositorio y lo construí de nuevo. Desde entonces ha estado quejándose de la sección dinámica. ¿Cuáles son las posibles razones para eso? ¿Y cómo los resuelvo?

Respuesta

5

Algunas versiones de gdb son en realidad un poco más útiles con esa advertencia. Que algo salida como la siguiente:

advertencia: .dynamic sección de "libhello.so" no está en la dirección esperada (mal biblioteca o discrepancia de la versión?)

Asegúrese de que el BGF encuentra la biblioteca de su programa era en realidad compilado con y que los símbolos de depuración, si están en archivos separados, para la aplicación y la biblioteca son actuales y consistentes con las compilaciones que está utilizando.

Una actualización suena como un buen sospechoso por una causa. La vinculación previa de bibliotecas también puede hacer que aparezca esta advertencia, aunque creo que gdb puede manejar ese caso.

+0

Un caso típico para esto: T1) se inició la aplicación y se siguió ejecutando con binarios antiguos, T2) luego los binarios/símbolos se "actualizaron" en el disco (pero la aplicación no se reinició), T3) luego la aplicación se colgó (o se generó un gcore). Al observar la marca de tiempo de la actualización (T2) y la marca de tiempo de coredump (T3), se supondría que se utilizó la lib adecuada (actualizada). ¡Asunción errónea! Sabiendo esto de antemano me habría salvado el día ... Nuestras aplicaciones están usando un entorno de inicio LD_LIBRARY/etc personalizado, por lo que tuvimos que agotar todas las otras opciones antes de enfrentar lo obvio (los chicos de TI simplemente olvidaron reiniciar las aplicaciones después de la actualización) – Vlad

Cuestiones relacionadas