2011-07-08 15 views
6

consigo el mensaje siguiente en GDB (versión 7.1):revertir pasos error multihilo

[Thread debugging using libthread_db enabled]

y el comando reverse-step

resultados con el mensaje de error:

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

Estoy depurando un código de serie en este momento, así que definitivamente no necesito multi-threading. ¿Puedo desactivar esto de alguna manera para que los comandos de depuración inversa más recientes funcionen? Además, si el código está en paralelo con OpenMPI, no habrá necesidad de depuración multi-hilo en absoluto, ¿verdad?

Editar: ¿Está configurado como un marcador de compilación que puede ser simplemente excluido?

Respuesta

9

No menciona qué versión de GDB está utilizando, pero desde hace un tiempo, el parámetro libthread-db-search-path está disponible.

(gdb) set libthread-db-search-path /tmp 
(gdb) start 
Temporary breakpoint 1 at 0x400632: file threads.c, line 14. 
warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available. 

BGF le dirá a las operaciones de búsqueda es una biblioteca de ayuda (libthread-db.so) en un directorio donde no es, por lo que no se habilitará la depuración multi-hilo!

No estoy seguro de que las aplicaciones paralelas OpenMPI sean multiprocesos (en contraste con OpenMP donde son multiproceso), por lo que no cambiará nada para usted.

EDITAR: depuración multiproceso es por lo general sólo habilita cuando libpthread.so o equivalente es cargado por su proceso (ldd your-process para comprobar si está vinculado como una biblioteca compartida) por lo que si no lo necesita, no podría ser una problema en su secuencia de comandos de compilación.

+0

¡Muchas gracias! Configuré libthread-db-search-path, pero aún así obtengo: [Depuración de subprocesos utilizando libthread_db habilitado] Utilizando la biblioteca libthread_db de host "/lib/libthread_db.so.1". Tendré que echarle un vistazo más cuidadoso a esto. El multihilo está habilitado por defecto, y el fragmento de código en el que estoy trabajando es serial (por el momento). Versión de Gdb: gdb de GNU (GDB) 7.2-ubuntu – tmaric

+0

¡extraño, doblé comprobé que está trabajando en mi máquina! si está desesperado, siempre puede eliminar/cambiar el nombre de la biblioteca '/ lib/libthread_db.so.1' :) – Kevin

+0

'/tmp' es uno de los peores directorios que podría usar. Cualquier persona en el sistema podría instalar un '/ tmp/libthread_db.so.1' malicioso y usted sería pwned. – aij