Quiero saber cómo funciona internamente gdb. p. Sé una breve idea de que hace uso de la llamada al sistema ptrace() para supervisar el programa rastreado. Pero quiero saber cómo maneja las señales, cómo inserta el nuevo código y otras cosas tan fabulosas que hace.¿Cómo funciona gdb?
Respuesta
La única forma en que lo descubrirá es estudiando el source.
También puede compilarlo y depurarlo consigo mismo. Examine el código y sabrá exactamente cómo hace lo que hace.
La fuente de lectura GDB no es para cardíacos, está repleta de macros y usa mucho libbfd
, que a su vez es difícil de entender.
Tiene que hacerlo, porque es portátil (y en particular, construye y funciona en plataformas que no tienen ptrace()
en absoluto).
Eche un vistazo a GDB Internals Manual, que cubre algunos de los aspectos importantes. También hay un PDF version anterior de este documento.
Del manual:
En este documento se documenta la parte interna del depurador GNU, GDB. Incluye una descripción de los algoritmos y operaciones clave de gdb, así como los mecanismos que adaptan gdb a hosts y objetivos específicos.
Tomado de gdbint.pdf:
Se puede hacer ya sea como puntos de interrupción de hardware o como software puntos de ruptura:
- puntos de interrupción de hardware están a veces disponibles como funciones de depuración incorporados con algunos papas fritas. Normalmente, estos trabajos tienen registrado dedicado en el que se puede almacenar la dirección de punto de interrupción. Si la PC (abreviatura de contador de programa) coincide alguna vez con un valor en un punto de interrupción registros, la CPU genera una excepción y la informa a GDB.
- Otra posibilidad es cuando un emulador está en uso; muchos emuladores incluyen circuitos que vigilan las líneas de direcciones que salen del procesador y lo obligan a detenerse si la dirección coincide con la dirección de un punto de interrupción.
- Una tercera posibilidad es que el objetivo ya tiene la capacidad de hacer puntos de interrupción de alguna manera; por ejemplo, un monitor ROM puede hacer sus propios puntos de interrupción del software . Entonces, aunque estos no son literalmente puntos de referencia de hardware , desde el punto de vista de GDB funcionan de la misma manera;
- Los puntos de interrupción del software requieren que GDB haga algo más de trabajo. La teoría básica es que GDB reemplazará una instrucción de programa con una trampa, una división ilegal , u otras instrucciones que causarán una excepción , y cuando se encuentre, GDB tomará la excepción y detendrá el programa. Cuando el usuario dice que continúe, GDB restaurará la instrucción original, de un solo paso, reinserte la trampa y continúe con .
- 1. ¿Por qué gdb casting no funciona?
- 2. gdb layout asm no funciona en mac?
- 3. cómo agregar gdb a cygwin
- 4. ¿Cómo se usa gdb?
- 5. ¿Cómo depurar usando gdb?
- 6. NSLog no hay salida en LLDB. Funciona en GDB
- 7. ¿Cómo usar gdb como monitor?
- 8. Cómo usar gdb con LD_PRELOAD
- 9. ¿Cómo puedo usar "ver" GDB?
- 10. Cómo imprimir wstring en gdb
- 11. Cómo importar 'GDB' en Python
- 12. ¿Cómo ejecutar gdb con LD_PRELOAD?
- 13. ¿Cómo evaluar las funciones en GDB?
- 14. ¿Cómo funciona la depuración inversa?
- 15. ¿Cómo funciona un depurador como gdb para establecer un punto de interrupción a través de JTAG?
- 16. ¿Por qué colgaría gdb?
- 17. gdb: multihilo
- 18. gdb: programa de salida sin salir de gdb
- 19. Depurar qemu con gdb
- 20. gdb en backtrack
- 21. gdb - depuración con tubería
- 22. gdb desmontar una línea
- 23. usando getopt con gdb
- 24. Cómo imprimir matrices Fortran en GDB?
- 25. ¿Cómo imprimir valores de registro en GDB?
- 26. ¿Cómo ejecutar el ensamblado en gdb directamente?
- 27. ¿Cómo guardar la configuración en gdb?
- 28. gdb - ¿Cómo ejecutar automáticamente el ejecutable?
- 29. ¿Cómo imprimo una matriz Java en gdb?
- 30. ¿Cómo puedo obligar a GDB a desmontar?
Esto cubre algunos de los aspectos importantes del funcionamiento interno de GDB: www.gnuarm.com/pdf/gdbint.pdf – zengr
@zengr: ¿Por qué no publicar esto como una respuesta? – DarkDust