Невозможно отладить многопоточное приложение с помощью gdb

Я отлаживаю многопоточное приложение с помощью gdb, но когда я запускаю программу в gdb, я получаю предупреждение:

предупреждение: невозможно найти libthread_db, совпадающий с библиотекой потоков подчиненного, отладка потоков будет недоступна.

Я все еще могу отлаживать, но я не могу отладить ничего, кроме основного потока. Я читал форумы, которые предлагают установить пакеты libthread-db1 и glibc-dbg, но это не решает проблему для меня.

На моей машине у меня 3 файла /lib/libthread_db.so.1, /lib/.debug/libthread_db-1.0.so, а также /lib/libthread_db-1.0.so, Я пытался создать символические ссылки в /lib с именем libthread_db.soодин раз указывая на /lib/libthread_db.so.1 файл, и в другой раз, указывая на /lib/libthread_db-1.0.so файл, а также я создал символическую ссылку /lib/.debug/libthread_db.so указывая на /lib/.debug/libthread_db-1.0.soвсе без везения.

В GDB я попытался настройки libthread-db-search-path в /lib (с символической ссылкой, однажды установленной в libthread_db.so.1и один раз libthread_db-1.0.soи также установлен на /lib/.debug,

Какие-либо предложения? Я использую Angstrom Linux v2.6.39 для BeagleBoard-xm.

2 ответа

предупреждение: невозможно найти libthread_db, соответствующую библиотеке потоков подчиненного

Это означает, что ваш /lib/libthread_db.so.1 не соответствует вашему /lib/libpthread.so.0, Такое несоответствие может быть результатом установки разных версий libc а также libthread_db пакеты или обновление одного или другого за пределами системы управления пакетами. Это также может быть ошибка в ваших пакетах (то есть они могут быть собраны неправильно).

Вы должны игнорировать /lib/.debug/* - это не библиотека, которую вы ищете.

Вы правильно пытаетесь использовать

set libthread-db-search-path [path]

однако, кажется, вы еще не указали на версию libthread_db, которая совместима с используемой вами библиотекой pthreads.

Сначала проверьте, с какой библиотекой pthread вы связаны, используя ldd:

ldd your_executable

затем убедитесь, что libthread-db-search-path указывает на местоположение, в котором есть совместимая версия libthread_db с любым файлом libpthread, который вы получаете. Возможно, ваш динамический компоновщик получает другую библиотеку pthread, чем вы ожидаете.

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