Tengo una pregunta general de gdb/gdbserver. Estoy intentando depurar una aplicación incorporada de arm linux utilizando gdb en el host y gdbserver en el destino remoto. Puedo recorrer las líneas de código al principio de main. Sin embargo, gdb (o gdbserver) parece perderse después de las llamadas a funciones de biblioteca compartidas. Incluso cuando configuro un punto de interrupción después de la llamada y uso continuar, nunca llega al punto de interrupción. Sé que no tengo símbolos en las bibliotecas compartidas y realmente no me importa entrar en ellos. ¿No debería ser capaz de pasar las llamadas a la biblioteca en gdb con éxito incluso sin que los símbolos estén en las bibliotecas compartidas o al menos continuar al siguiente punto de interrupción? ¿O esto indica un tipo diferente de problema?Repasar llamadas de biblioteca con gdb/gdbserver
9
A
Respuesta
1
Los puntos de interrupción por dirección, en lugar de por símbolo, a veces son más confiables.
Prueba esto:
(gdb) x/i my_func 0x12345678 <my_func> ... (gdb) break *0x12345678
Cuestiones relacionadas
- 1. ¿Dónde hay un buen lugar para repasar algunas matemáticas?
- 2. Herramienta para crear la jerarquía de llamadas de la biblioteca
- 3. Biblioteca de llamadas C++ de Java en Android
- 4. ¿Hay una biblioteca gratuita de Python para llamadas telefónicas?
- 5. Realización de llamadas anidadas para "ejecutar" con la biblioteca Fabric de Python
- 6. Llamadas síncronas con jquery
- 7. descargar la biblioteca dinámica necesita dos llamadas dlclose()?
- 8. Excepción con Stacktrace que contiene solo llamadas a la biblioteca java
- 9. usando SetTimeout con llamadas Ajax
- 10. haciendo llamadas telefónicas con C#
- 11. generan gráfico de llamadas jerarquía con ctags
- 12. Bloquear devoluciones de llamadas con EXC_BAD_ACCESS
- 13. Llamadas al método de encadenamiento con
- 14. ¿Cuál es la forma más rápida de repasar los algoritmos para una entrevista técnica (el lunes)?
- 15. Llamadas JNI intercaladas con llamadas regulares de Java: ¿cuál es el orden de ejecución?
- 16. ¿Hay alguna forma de marcar el uso de las llamadas de biblioteca C no reentrantes?
- 17. Desactivar BlockUI con certeza llamadas Ajax
- 18. jQuery objeto diferido con llamadas ajax anidadas
- 19. Disparar shouldStartLoadWithRequest con múltiples llamadas a window.location.href
- 20. Llamadas API simples con Node.js y Express
- 21. Biblioteca estática con dependencias
- 22. Biblioteca para registrar la Pila de llamadas en tiempo de ejecución (Windows/Linux)
- 23. Uso de una biblioteca Java con palabras reservadas de Scala
- 24. Llamadas de función retrasadas
- 25. ¿Qué son los registros de llamadas y de llamadas guardadas?
- 26. ¿Cuál es la diferencia entre "llamadas al sistema C" y "rutinas de la biblioteca C"?
- 27. Depuración de plugins de Vim con rastreo de llamadas
- 28. Llamadas Async P/invocación
- 29. cola de llamadas AJAX
- 30. Llamadas de JQuery Ajax con autenticación básica de HTTP
¿Tiene pruebas de otra fuente que indica que se está ejecutando la instrucción (s) en el punto de ruptura? En lugar de ver la fuente de alto nivel, mira el desmontaje para ver más allá de la interpretación de 'gdb'. –
¿El problema ocurre con un objeto compartido particular, o puede crear un "caso de prueba" trivial que ilustre el problema? –
Perdón por el largo tiempo de respuesta. El código se está ejecutando correctamente en el dispositivo incorporado. Es solo gdb o gdbserver lo que se está perdiendo. Una vez que se realiza una llamada a una función de la biblioteca, pierde el control de su lugar en el programa y nunca puede recuperar el control. No creo que sea necesariamente toda la función de la biblioteca, ya que toca uno, abrir(), que no puede pasar al principio de la ejecución. – Jim