PoltoS Posted January 1, 2016 Share Posted January 1, 2016 Никто не собирал gdb пакет? Не хочется изобретать велосипед. Или пойти и изобрести? У нас софтина одна явно требует чего-то особенного на кинетике и работать не хочет (виснет с 100% загрузкой одного ядра). Без gdb не разобраться, что тут не так. Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted January 1, 2016 Share Posted January 1, 2016 В Entware есть. Quote Link to comment Share on other sites More sharing options...
PoltoS Posted January 1, 2016 Author Share Posted January 1, 2016 Этот Entware не совместим с собранными мной пакетами - ругается на них. Самопальные пакеты, собранные родной SDK нельзя одновременно с Enware использовать? Вообще, этак Entware просто кладезь полезных прог. Было бы здорово понять, как их одновременно запускать. Quote Link to comment Share on other sites More sharing options...
McMCC Posted January 2, 2016 Share Posted January 2, 2016 gdb можно добавить из этого архива $ make V=s toolchain/gdb/compile $ make V=s toolchain/gdb/install $ make V=s ndwrt_gpl_2.06.A.6.0-12_011215_gdb.tar.bz2 Quote Link to comment Share on other sites More sharing options...
PoltoS Posted January 8, 2016 Author Share Posted January 8, 2016 А могли бы ещё помочь допилить эти патчи для сборки с 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. Quote Link to comment Share on other sites More sharing options...
McMCC Posted January 8, 2016 Share Posted January 8, 2016 А какие там патчи нужны? Впервые слышу об этом. Возьмите исходники тулчейна с 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]... Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted January 9, 2016 Share Posted January 9, 2016 Этот Entware не совместим с собранными мной пакетами - ругается на них. Самопальные пакеты, собранные родной SDK нельзя одновременно с Enware использовать?Самопальные пакеты можно попробовать запустить в chroot-среде. Есть аплет chroot для busybox, есть отдельно в виде пакета coreutils-chroot. Quote Link to comment Share on other sites More sharing options...
PoltoS Posted January 10, 2016 Author Share Posted January 10, 2016 ... внутри есть параметр 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 имеет поддержку потоков? или тоже нет? Quote Link to comment Share on other sites More sharing options...
Александр Рыжов Posted January 10, 2016 Share Posted January 10, 2016 Имеет. Quote Link to comment Share on other sites More sharing options...
McMCC Posted January 10, 2016 Share Posted January 10, 2016 Если вы взялись за такой инструмент как gdb, то наверное не должны задавать такие простые вопросы новичков здесь, в этом месте? Ваша первая ошибка, вы пытаетесь использовать gdb, а не gdbserver, отсюда и вопросы про стрипнутые бинарики и отсутствие кучи информации. Откуда gdb знать, где ему взять исходники, если сборка осуществлялась в другом месте? Вторая ваша ошибка, это думать, что gdb нужно собирать явно с чем-то, а это совершенно не так, он собирается как отдельное приложение с привязкой к архитектуре и только. С таким подходом к делу, вам и Entware не поможет, но я все же дам вам несколько советов: 1. Вам необходимо использовать gdbserver на роутере, т.к. просто gdb использовать на нем бесполезно, его имеет смысл использовать только в том случае, если вы всю сборку осуществляете на самом роутере, а для этого на нем должны быть установлены gcc и binutils как минимум. Причина очевидна, gdb должно быть доступно место сборки. 2. Так как вы собираете приложение на компьютере, в качестве хоста, то gdb должно запускаться именно на нем. Вам необходимо настроить связку gdbserver на роутере и gdb на компе. На роутере приложения могут быть стрипнутыми, это никак не влияет на отладку, так как gdb будет брать информацию с того места, где вы собирали непосредственно само приложение с ключиком -g для отладки, естественно указав ему это приложение, оно как правило не будет стрипнутым. 3. Сложности могут возникнуть с библиотеками, их тоже необходимо собрать с ключиком -g и сохранить в отдельной директории для последующей их загрузки в gdb. В противном случае, вы не сможете получить полную отладку и если ошибка будет в какой-нибудь либе, то потеряете связь. Все же, я бы настойчиво рекомендовал вам для начало почитать нужную литературу, по gdb очень много информации, и про удаленную отладку в частности... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.