vez - hacer que gdb cargue una biblioteca compartida desde una ruta específica
steam family sharing como funciona (1)
Obtuve un núcleo mientras ejecutaba una aplicación y guardé el archivo ejecutable, el archivo central y una biblioteca compartida que la aplicación usa en /tmp
para verificarlos más tarde. Luego modifiqué la biblioteca, la reconstruí y comencé el ejecutable nuevamente. Ahora cuando intento depurar el núcleo, gdb está cargando la biblioteca compartida desde su ruta original y no desde el directorio /tmp
donde /tmp
la biblioteca original.
Por ejemplo, la ruta original era /opt/mydir/lib/libmylib.so.0
. gdb está cargando esta biblioteca compartida, mientras que yo quiero que cargue /tmp/libmylib.so.0
. La aplicación también utiliza algunas bibliotecas estándar que se encuentran en los directorios /usr/lib
y /lib
, por lo que no quiero que estas rutas se modifiquen. Solo quiero cambiar /opt/mydir/lib/
-> /tmp
. ¿Cómo puedo hacer eso?
La solución más simple es restaurar temporalmente /opt/mydir/lib/libmylib.so.0
a la copia que se usó en el momento del bloqueo (es decir, la que ahora está en /tmp
), analizar el núcleo y restaurar la nueva versión.
Si no quiere hacer eso, set solib-search-path
y set sysroot
son sus amigos .
Tenga en cuenta que debe establecer ambos antes de cargar el core
. Esta secuencia debería funcionar:
(gdb) set sysroot /no/such/file
(gdb) set solib-search-path /tmp:/usr/lib:/lib
(gdb) core /tmp/core