предупреждение: невозможно найти libthread_db, совпадающий с библиотекой потоков подчиненного, отладка потоков будет недоступна.
Эта ошибка означает, что GDB попытался dlopen
каждые libthread_db.so.1
из libthread-db-search-path
(используйте show libthread-db-search-path
, чтобы увидеть, что это такое), и все версии libthread_db.so.1
не смогли работать с libpthread
, который у вас есть на цели (ваше встроенное устройство).
Скорее всего, ваш libthread-db-search-path
просто неверен.
Другая возможность состоит в том, что ваша цепочка инструментов поставила (скажем) i686-linux
версию libthread_db.so.1
, но вы используете GDB, созданную для x86_64-linux
. 64-битный GDB (очевидно) не может выдавать 32-битный libthread_db
.
Даже если вам удастся правильно настроить многопоточную отладку (которую вы должны попробовать в любом случае), маловероятно, что это поможет вам найти проблему с повреждением кучи: обычно к моменту сбоя из-за кучи коррупция, все следы кода, который фактически вызвал ее, исчезли.
Если вы используете glibc
на цели, MALLOC_CHECK_=2
может помочь. Документация здесь .
Если вы используете какой-то другой libc
, он может иметь аналогичные средства отладки malloc. Или вы можете попробовать один из много отладка mallocs доступны.