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