Estoy tratando de entender cómo funciona una determinada biblioteca. Lo he compilado con mis instrucciones añadidas y todo es genial. Ahora quiero detener el programa de ejemplo durante el tiempo de ejecución para ver la pila de llamadas, pero no puedo entender cómo hacerlo con gdb. La función que quiero romper, está dentro de una biblioteca compartida. He revisado un previous question aquí en SO, pero el enfoque no funciona para mí. El lenguaje en cuestión es C++. Intenté proporcionar el nombre de archivo y el número de línea, pero gdb se niega a comprenderlo, solo enumera los archivos fuente de la aplicación de demostración.Depuración/rastreo dentro de una biblioteca compartida durante el tiempo de ejecución?
¿Alguna sugerencia?
Sí, pero asegúrese de que se ha compilado biblioteca con -g, ¡y con optimizaciones desactivadas! – Alex
Desafortunadamente eso no ayudó. La función aún no está visible, incluso desde main. ¿Hay algo que pueda agregar al código para que la ejecución se detenga y caiga en el depurador? – EightyEight
@EightyEight: Hmm, eso funciona para mí. ¿La biblioteca a la que intenta depurar está cargada dinámicamente mediante dlopen()? Eso podría explicar por qué todavía no es visible en main. Si ese es el caso, puede establecer su punto de interrupción inicial después de la llamada dlopen para la biblioteca de destino, luego establecer el punto de corte final. Parece que debería haber una manera más simple; Seguiré buscando. –