Я пытаюсь отлаживать libc
на Ubuntu 14.04, но не смог это сделать, используя gdb
, так как библиотека и источник не соответствуют правильно.Не удалось отладить исходный код libc на Ubuntu 14.04
gdb
не в состоянии правильно разместить точку останова. Как и в, я могу войти в функцию и увидеть исходный код, но маркер точки останова будет находиться в некотором случайном месте внутри функции вместо того, чтобы быть в начале.
Когда я приступаю заявление заявления с использованием next
на gdb
, маркер будет продолжать прыгать вверх и вниз (Причина в том, что исходный файл и отлаживать библиотеки не правильно соответствия.
Моя версия glibc
согласно ldd
является
ldd --version
ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
Я скачал libc
источников с помощью команды:
sudo apt-get source libc6
выше создаст следующие файлы:
eglibc-2.19
eglibc_2.19-0ubuntu6.6.debian.tar.xz
eglibc_2.19-0ubuntu6.6.dsc
eglibc_2.19.orig.tar.xz
В gdb
я делаю
dir <path-to-libc-source>/nptl
(NPTL, потому что я заходя в pthread_create
)
Я попытался использовать как eglibc-2.19
источник, а также eglibc_2.19.orig.tar.xz
.
Я также попытался установить LD_LIBRARY_PATH: export LD_LIBRARY_PATH=/usr/lib/debug
Но выше, также не помогает.
Может ли кто-нибудь, кто успешно смог отладить код libc
, поделился своими методами относительно того, как это сделать правильно?
Но не будет 'gdb' использовать библиотеку отладки. Я также попытался установить LD_LIBRARY_PATH для отладки пути lib, даже если это не помогает –
«gdb» использует то, что вы ему рассказываете. Обычно вы указываете путь/имя исполняемого файла. исходные файлы должны быть видны в «gdb» для отображения соответствующего кода при выполнении кода. Примечание: библиотека (особенно для системных библиотек) будет удалена вся информация об отладке (возможно, с помощью чего-то похожего на команду «strip»). Между удалением информации об оптимизации и отладочной информации очень мало шансов легко отладить системную библиотеку , – user3629249
Согласен. Но в библиотеках в '/ usr/lib/debug' есть своя информация об отладке –