Невозможно отладить многопоточное приложение с помощью 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, чем вы ожидаете.