Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Никто не собирал gdb пакет? Не хочется изобретать велосипед.

Или пойти и изобрести? У нас софтина одна явно требует чего-то особенного на кинетике и работать не хочет (виснет с 100% загрузкой одного ядра). Без gdb не разобраться, что тут не так.

Опубликовано

Этот Entware не совместим с собранными мной пакетами - ругается на них. Самопальные пакеты, собранные родной SDK нельзя одновременно с Enware использовать?

Вообще, этак Entware просто кладезь полезных прог. Было бы здорово понять, как их одновременно запускать.

Опубликовано

А могли бы ещё помочь допилить эти патчи для сборки с libthread_db. В toolchain эта либа не собирается, а привычной для OpenWRT галочки "Threads Debugging" (PTHREADS_DEBUG_SUPPORT) не найдено, да и упоминания этой константы тоже нет.

А то вот такое вылезает: warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.

Опубликовано

А какие там патчи нужны? Впервые слышу об этом. Возьмите исходники тулчейна с https://github.com/ndmsystems/embtoolkit/tree/ndm-1.7.0, там кнопочка есть - Download zip,

соберите его самостоятельно, взяв нужный конфиг из директории configs. Для mipsel этот конфиг называется mipsel_gcc_4.9.2_uclibc.config, внутри есть параметр CONFIG_KEMBTK_UCLIBC_PTHREADS_DEBUG_SUPPORT, укажите ему "y". Собранную либу можно положить ко всем остальным, либо указать в gdb отдельно - set libthread-db-search-path [path]...

Опубликовано
Этот Entware не совместим с собранными мной пакетами - ругается на них. Самопальные пакеты, собранные родной SDK нельзя одновременно с Enware использовать?
Самопальные пакеты можно попробовать запустить в chroot-среде. Есть аплет chroot для busybox, есть отдельно в виде пакета coreutils-chroot.
Опубликовано
... внутри есть параметр CONFIG_KEMBTK_UCLIBC_PTHREADS_DEBUG_SUPPORT, укажите ему "y". Собранную либу можно положить ко всем остальным, либо указать в gdb отдельно - set libthread-db-search-path [path]...

Спасибо, не догадался собрать тулчейн, да и конфиг на знал, где брать. Собрал, положил в /opt/lib, также явно пробовал указать путь через libthread-db-search-path, но при старте потоков gdb всё так же ругается. Может нужно явно gdb пересобрать с этой либой?

Кстати, при старте дебажной версии v8 (именно она подвисает, ради неё вся работа), gdb странно ругается

(gdb) r
Starting program: /opt/usr/bin/d8 
warning: GDB can't find the start of the function at 0x2aaa8f60.

   GDB is unable to find the start of the function at 0x2aaa8f60
and thus can't determine the size of that function's stack frame.
This means that GDB may be unable to access that stack frame, or
the frames below it.
   This problem is most likely caused by an invalid program counter or
stack pointer.
   However, if you think GDB should simply search farther back
from 0x2aaa8f60 for code which looks like the beginning of a
function, you can increase the range of the search using the `set
heuristic-fence-post' command.
warning: Unable to find dynamic linker breakpoint function.
GDB will be unable to debug shared library initializers
and track explicitly loaded dynamic code.
warning: GDB can't find the start of the function at 0x2aaa8f60.

Что бы это могло значить? Обычно это означает битый стек, кажется.

Ещё мне пришлось копировать бинарники из build_dir/target-ku_rd-mipsel-linux-uclibc/libv8/... т.к. те, что в пакете стрипнуты основательно и никакой debug информации уже не несут. Это как-то отключается через .config?

Самопальные пакеты можно попробовать запустить в chroot-среде. Есть аплет chroot для busybox, есть отдельно в виде пакета coreutils-chroot.

Александр, а gdb из Entware имеет поддержку потоков? или тоже нет?

Опубликовано

Если вы взялись за такой инструмент как gdb, то наверное не должны задавать такие простые вопросы новичков здесь, в этом месте? Ваша первая ошибка, вы пытаетесь использовать gdb, а не gdbserver, отсюда и вопросы про стрипнутые бинарики и отсутствие кучи информации. Откуда gdb знать, где ему взять исходники, если сборка осуществлялась в другом месте? Вторая ваша ошибка, это думать, что gdb нужно собирать явно с чем-то, а это совершенно не так, он собирается как отдельное приложение с привязкой к архитектуре и только. С таким подходом к делу, вам и Entware не поможет, но я все же дам вам несколько советов:

1. Вам необходимо использовать gdbserver на роутере, т.к. просто gdb использовать на нем бесполезно, его имеет смысл использовать только в том случае, если вы всю сборку осуществляете на самом роутере, а для этого на нем должны быть установлены gcc и binutils как минимум. Причина очевидна, gdb должно быть доступно место сборки.

2. Так как вы собираете приложение на компьютере, в качестве хоста, то gdb должно запускаться именно на нем. Вам необходимо настроить связку gdbserver на роутере и gdb на компе. На роутере приложения могут быть стрипнутыми, это никак не влияет на отладку, так как gdb будет брать информацию с того места, где вы собирали непосредственно само приложение с ключиком -g для отладки, естественно указав ему это приложение, оно как правило не будет стрипнутым.

3. Сложности могут возникнуть с библиотеками, их тоже необходимо собрать с ключиком -g и сохранить в отдельной директории для последующей их загрузки в gdb. В противном случае, вы не сможете получить полную отладку и если ошибка будет в какой-нибудь либе, то потеряете связь.

Все же, я бы настойчиво рекомендовал вам для начало почитать нужную литературу, по gdb очень много информации, и про удаленную отладку в частности...

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.