Repolode
rr-debugger

rr-debugger/rr

Una herramienta ligera para Linux que graba la ejecución de programas y la reproduce de forma determinista, añadiendo ejecución inversa a gdb.

Estrellas
10,734
Forks
666
Issues abiertos
477
Último commit
hace 5 días

¿Qué es?

rr graba la ejecución de aplicaciones, incluidos árboles de procesos e hilos, y permite reproducir esa grabación repetidamente en gdb. Como la reproducción recrea la misma ejecución, puedes avanzar hacia atrás, establecer puntos de interrupción en eventos anteriores e inspeccionar el estado en cualquier momento de una ejecución pasada. Esto facilita encontrar errores no deterministas difíciles de reproducir.

La experiencia de depuración amplía gdb en lugar de sustituirlo. Las funciones estándar de gdb, como los puntos de observación de datos por hardware, siguen disponibles durante la reproducción, y los comandos de ejecución inversa se añaden a ellas. El proyecto está escrito en C++ y está dirigido a Linux.

rr depende de hardware y compatibilidad específicos del kernel. Requiere Linux kernel 4.7 o posterior y ciertas CPU Intel, AMD Zen o AArch64, y puede ejecutarse en máquinas virtuales invitadas que virtualicen los contadores de rendimiento del hardware.

Funciones clave

  • 01Graba la ejecución de aplicaciones multiproceso y multihilo para reproducirla más adelante.
  • 02Admite comandos de ejecución inversa dentro de gdb.
  • 03Permite seguir usando los puntos de observación de datos por hardware de gdb durante la reproducción.
  • 04Reproduce las grabaciones de forma determinista, para poder examinar varias veces una ejecución que falla.
  • 05Se ejecuta en Linux con CPU Intel, AMD Zen y AArch64 compatibles.

Casos de uso

  • Depurar fallos intermitentes o condiciones de carrera que no se reproducen cuando se intenta.
  • Retroceder desde un fallo para encontrar la instrucción que provocó un valor incorrecto.
  • Investigar errores en programas Linux grandes, multiproceso o multihilo.

Inicio rápido

  1. 1

    Consulta las instrucciones de instalación y compilación en la wiki del proyecto

  2. 2

    Comprueba que tu sistema cumple los requisitos (Linux kernel 4.7 o posterior y una CPU Intel, AMD Zen o AArch64 compatible)

Antes de usarlo

  • Solo funciona en Linux y requiere una CPU compatible o una VM que exponga contadores de rendimiento de hardware.
  • La licencia figura como NOASSERTION, así que consulta las condiciones de licencia del repositorio antes de usarlo.

Temas

#debugger#gdb#linux#reverse-execution#record-replay#c-plus-plus

Preguntas frecuentes

¿Qué es rr?
Una herramienta ligera para Linux que graba la ejecución de programas y la reproduce de forma determinista, añadiendo ejecución inversa a gdb. rr graba la ejecución de aplicaciones, incluidos árboles de procesos e hilos, y permite reproducir esa grabación repetidamente en gdb. Como la reproducción recrea la misma ejecución, puedes avanzar hacia atrás, establecer puntos de interrupción en eventos anteriores e inspeccionar el estado en cualquier momento de una ejecución pasada. Esto facilita encontrar errores no deterministas difíciles de reproducir.
¿rr es gratuito? ¿Qué licencia tiene?
rr es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿rr sigue mantenido?
Mantenimiento activo. El último commit de rr fue el 2 nov 2026.
¿Para qué puedo usar rr?
Depurar fallos intermitentes o condiciones de carrera que no se reproducen cuando se intenta. Retroceder desde un fallo para encontrar la instrucción que provocó un valor incorrecto. Investigar errores en programas Linux grandes, multiproceso o multihilo.
¿Cómo se instala rr?
Consulta las instrucciones de instalación y compilación en la wiki del proyecto Comprueba que tu sistema cumple los requisitos (Linux kernel 4.7 o posterior y una CPU Intel, AMD Zen o AArch64 compatible)
¿Dónde consigo rr?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/rr-debugger/rr

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados