Это часто случается в Linux, особенно для встроенных целей.Существует две распространенные причины:
- вы используете glibc и удалили
libpthread.so.0
- несоответствие между
libpthread.so.0
и libthread_db.so.1
Сам GDB не знает, как декодировать "блоки управления потоками", поддерживаемые glibc и считающиеся частной реализацией glibc.Он использует libthread_db.so.1
(часть glibc), чтобы помочь ему в этом.Следовательно, libthread_db.so.1
и libpthread.so.0
должны совпадать в флагах версии и компиляции.Кроме того, libthread_db.so.1
требует присутствия определенных неглобальных символов в libpthread.so.0
.
Решение: используйте strip --strip-debug libpthread.so.0
вместо strip libpthread.so.0
.
Если вы выполняете удаленную отладку, убедитесь, что libpthread.so.0
для цели и libthread_db.so.1
для хоста.