La variable de entorno LD_DEBUG para depurar bibliotecas compartidas en Linux

Fuentes: The LD_DEBUG environment variable
Imagen generada por IA con el prompt: Terminal window on dark background showing colorful Linux linker debug output, with code-like text lines, blue and green highlights, abstract server room glow.
Imagen generada con IA

La variable de entorno LD_DEBUG es una herramienta poco conocida del enlazador dinámico de Linux que facilita el diagnóstico de problemas de carga de bibliotecas compartidas. En sistemas grandes con múltiples versiones de bibliotecas dinámicas, es habitual que se cargue una versión distinta de la esperada, lo que provoca errores difíciles de rastrear. Aunque el comando strace permite observar qué bibliotecas accede un proceso, LD_DEBUG ofrece información mucho más específica y directa sobre el proceso de carga.

Al definir LD_DEBUG antes de ejecutar cualquier programa, el enlazador dinámico vuelca información detallada sobre el proceso. Las opciones disponibles incluyen libs (rutas de búsqueda de bibliotecas), reloc (procesamiento de reubicaciones), files (progreso de archivos de entrada), symbols (tabla de símbolos), bindings (enlaces de símbolos), versions (dependencias de versión), statistics (estadísticas de reubicación) y unused (DSO no utilizados), además de un modo all que las combina todas. Si se necesita guardar la salida en un archivo, se puede usar la variable LD_DEBUG_OUTPUT para especificar la ruta de destino.

El artículo complementa LD_DEBUG con otras herramientas útiles: strace para rastrear llamadas al sistema, ldd para resolver dependencias dinámicas, el comando objdump -x con grep NEEDED para listar bibliotecas requeridas, patchelf para modificar la rpath de ejecutables ELF, y LD_PRELOAD para sustituir bibliotecas en tiempo de carga. La variable solo está disponible en Linux; en Windows se puede obtener información equivalente habilitando "Show Loader Snaps" mediante gflags.exe y examinando el registro con WinDbg.