LINUX.ORG.RU

Проблема с удаленной отладкой

 ,


0

3

Пытаюсь я запустить отладку приложения, запущенного на другой машине через gdbserver.

При нажатии кнопки «с» в gdb вылетает SIGSEGV:

(gdb) target remote 10.19.32.24:10000
Remote debugging using 10.19.32.24:10000
Reading symbols from /lib/ld-linux.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
0xb7fdfd00 in ?? () from /lib/ld-linux.so.2
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xb7feebf4 in ?? () from /lib/ld-linux.so.2

Если просто запустить приложение на удаленной машине, то все нормально запускается.

Если сначала запустить удаленное приложение, а потом к нему подключить gdbserver через параметр attach, то тоже все нормально отлаживается.

Может кто сталкивался с чем-то подобным и может сказать в чем дело?

Вот вывод команды «bt»

(gdb) bt
#0  0xb7feebf4 in ?? () from /lib/ld-linux.so.2
#1  0xb7fef089 in ?? () from /lib/ld-linux.so.2
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Похоже что-то непонятное происходит в самом начале запуска тестируемой программы в библиотеке ld-linux.so.2

pathfinder ★★★★
() автор топика

Может быть беда в отсутствии отладочных версий всяких libc.so, ld-linux.so. Gdb вроде к ним придирчив, у него могут, например, многопоточные приложения ломаться, если их нет.

ilammy ★★★
()

дебагер - выбор, анонистов. мужики пишут и читают логи.

anonymous
()
Ответ на: комментарий от pathfinder

Угу. У нас в проекте собирается свой LFS и его никак не отучат стрипать только ненужное. В итоге на системе ничего не отлаживается, пока туда не закинешь libc и ld-linux.so с символами. Ни если запускать приложение, а потом подключаться. Ни если запускать сразу из-под gdb или gdbserver. Просто падает с SIGSEGV или SIGSTOP ещё до входа в main. Может, это такая же проблема.

В итоге почти никто не пользуется интерактивными отладчиками, все пишут и читают логи, как вон Ъ-мужики в представлении анона :(

ilammy ★★★
()
Последнее исправление: ilammy (всего исправлений: 1)
Ответ на: комментарий от sigurd

попробуй вместо continue использовать run

Пробовал, при удаленной отладке доступен только continue. Приложение как-бы запущено и остановлено.

pathfinder ★★★★
() автор топика
Ответ на: комментарий от ilammy

В итоге на системе ничего не отлаживается, пока туда не закинешь libc и ld-linux.so с символами.

Ок, спасибо, попробую разобраться с ld-linux.so и символами.

pathfinder ★★★★
() автор топика
Ответ на: комментарий от ilammy

Еще раз спасибо. Я частично победил эту проблему. На локальной машине в одной папке есть полный образ корневой файловой системы удаленной машины. Я указал в gdb:

set sysroot [путь-до-корневой-фс]

У меня заработало. Правда пришлось эту строку прописать в ~/.gdbinit, так-как в QtCreator-е нет настроек окружения gdb для удаленной отладки.

pathfinder ★★★★
() автор топика
Ответ на: комментарий от pathfinder

Тык, в чём была причина?

«На локальной машине в одной папке есть полный образ корневой файловой системы удаленной машины»

GDB по умолчанию не имел прав на доступ к ФС штоле?

anonymous
()

возможно вот тут корень проблемы:

Most people who use the commands mentioned below do not experience any difficulties. However, it is easy to make a typo and render the new system unusable, so before running the strip commands, it is a good idea to make a backup of the LFS system in its current state.

First place the debugging symbols for selected libraries in separate files. This debugging information is needed if running regression tests that use valgrind or gdb later in BLFS.

далее идёт выборка по тем библиотекам которые критичны для дебагера:

save_lib=«ld-2.26.so libc-2.26.so libpthread-2.26.so libthread_db-1.0.so»

................

save_usrlib=«libquadmath.so.0.0.0 libstdc++.so.6.0.23 libmpx.so.2.0.1 libmpxwrappers.so.2.0.1 libitm.so.1.0.0 libcilkrts.so.5.0.0 libatomic.so.1.2.0»

...................

версии естественно могут быть и другие, но сама суть действа надеюсь понятна.

Gramozeka ★★
()
Последнее исправление: Gramozeka (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.