Многопоточная ошибка обратного шага

Я получаю следующее сообщение в 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 проверить, связана ли она как разделяемая библиотека), поэтому, если она вам не нужна, возможно, проблема в вашем скрипте компиляции.

Другие вопросы по тегам