Как избавиться от libthread_db - PullRequest
2 голосов
/ 26 января 2011

Во встроенной файловой системе я бы хотел избавиться от libthread_db.Насколько я понимаю, это было необходимо только при отладке программы с использованием pthread.Однако вот мое наблюдение:

  • Если libthread_db отсутствует во время загрузки (когда запускается первый pthread с использованием программы), запуск такой программы вызывает ошибку segfault.

  • Добавление libthread_db позже (т. Е. После того, как программа pthread произвела ошибку в сегменте) ничего не меняет.Каждая программа, использующая pthread, будет запускаться при запуске.

Таким образом, кажется, что libthread_db необходим для запуска любой программы с использованием pthread.

Ответы [ 2 ]

5 голосов
/ 27 января 2011

libthread_db - это никогда , используемый потоковой программой. только используется отладчиком.

Ваше утверждение, что для запуска программы с использованием pthreads каким-то образом требуется libthread_db, неверно. Если ваши программы pthread аварийно завершают работу, когда libthread_db удаляется из системы, что-то еще сломано на вашей встроенной цели; удаление libthread_db просто вызывает что-то еще.

Вы можете тривиально подтвердить это: собрать программу pthread в обычной системе Linux. Запустите эту программу под strace и обратите внимание, что libthread_db не появляется в выводе strace. Теперь переименуйте /lib/libthread_db.so.1 во что-то другое и обратите внимание, что тестовая программа продолжает работать очень хорошо.

1 голос
/ 17 февраля 2012

вам нужно использовать target record

http://sources.redhat.com/ml/gdb/2010-07/msg00096.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...