многопоточная ошибка обратного шага - PullRequest
6 голосов
/ 08 июля 2011

Я получаю следующее сообщение в GDB (версия 7.1):

[Thread debugging using libthread_db enabled]

и команда reverse-step

приводит к следующему сообщению об ошибке:

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

Я сейчас отлаживаю последовательный код, поэтому мне определенно не нужна многопоточность. Можно ли это как-то отключить, чтобы заставить работать последние команды обратной отладки? Кроме того, если код распараллеливается с OpenMPI, не будет необходимости в многопоточной отладке, не так ли?

Редактировать: это установлено как флаг компиляции, который может быть просто исключен?

1 Ответ

9 голосов
/ 08 июля 2011

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

...