sistemas que programacion paralelismo operativos multihilos entre diferencias concurrencia multithreading gdb reverse-debugging

multithreading - que - multihilos sistemas operativos



¿Cómo habilito la depuración inversa en un programa multihilo? (1)

Para hacer esto, necesita activar el objetivo de grabación de instrucciones, ejecutando el comando

record

desde el punto en el que desea avanzar y retroceder (recuerde que la grabación ralentizará significativamente la ejecución, especialmente si tiene varios subprocesos)

Acabo de comprobar que está funcionando correctamente:

(gdb) info threads Id Target Id Frame 2 Thread 0x7ffff7860700 (LWP 5503) "a.out" hello (arg=0x601030) at test2.c:16 * 1 Thread 0x7ffff7fca700 (LWP 5502) "a.out" main (argc=2, argv=0x7fffffffe2e8) at test2.c:47

...

(gdb) next 49 p[i].id=i; (gdb) reverse-next 47 for (i=0; i<n; i++)

...

17 printf("Hello from node %d/n", p->id); (gdb) next Hello from node 1 18 return (NULL); (gdb) reverse-next 17 printf("Hello from node %d/n", p->id);

Estoy tratando de usar las funciones de depuración inversa de gdb 7.3.1 en un proyecto de subprocesos múltiples (usando libevent), pero obtengo el siguiente error:

(gdb) reverse-step Target multi-thread does not support this command.

A partir de esta pregunta , pensé que quizás era un problema cargar libthread_db pero, cuando ejecuto el programa, gdb dice:

Starting program: /home/robb/slug/slug [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1".

¿Cómo puedo habilitar la depuración inversa con gdb 7.3.1 en un proyecto de subprocesos múltiples? ¿Es posible?