Многопоточная ошибка обратного шага
Я получаю следующее сообщение в GDB (версия 7.1):
[Thread debugging using libthread_db enabled]
и команда reverse-step
результаты со следующим сообщением об ошибке:
(gdb) reverse-step
Target multi-thread does not support this command
Я сейчас отлаживаю последовательный код, поэтому мне определенно не нужна многопоточность. Можно ли это как-то отключить, чтобы заставить работать последние команды обратной отладки? Кроме того, если код распараллеливается с OpenMPI, не будет необходимости в многопоточной отладке, не так ли?
Изменить: это установлен как флаг компиляции, который может быть просто исключен?
1 ответ
Вы не упоминаете, какую версию GDB вы используете, но через некоторое время параметр libthread-db-search-path
доступен.
(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.
скажет GDB искать его вспомогательную библиотеку (libthread-db.so
) в каталоге, где его нет, поэтому многопоточная отладка не будет включена!
Я не уверен, что параллельные приложения OpenMPI являются многопроцессорными (в отличие от OpenMP, где они являются многопоточными), поэтому это ничего не изменит для вас.
РЕДАКТИРОВАТЬ: многопоточность отладки обычно включается только когда libpthread.so
или эквивалент загружен вашим процессом (ldd your-process
проверить, связана ли она как разделяемая библиотека), поэтому, если она вам не нужна, возможно, проблема в вашем скрипте компиляции.