2017-01-19 2 views
0

Я отлаживаю проект C в eclipse CodeSourcery IDE. Проект работает в устройстве linux-arm, поэтому я перекрестно компилирую и отлаживаю его с помощью gdbserver. Мой проект состоит из основной программы и некоторых разделяемых библиотек, которые я компилирую с тегами -g3 (try -g также). Все строится правильно: компоновщик находит всю зависимость, я копирую скомпилированные файлы в удаленную машину и я бегEclipse: gdbserver не находит исходные файлы

$gdbserver :2159 Test & 

и я могу начать отладку удалена после настройки отладчика IDE. Я правильно отлаживаю, пока не «войду в» библиотечную функцию. Я получаю выходное сообщение

[New Thread 1032] 

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

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

Благодаря

+0

Итак, все библиотеки скомпилированы с '-O0' и' -g3'? –

+0

Да, это правильно – Joster

ответ

0

How to runtime debug shared libraries?

Глядя на этот вопрос вы можете увидеть, что GDB может назначить точки останова на функции внутри библиотек, используя только имя функции.

(gdb) b func 
Function "func" not defined. 
Make breakpoint pending on future shared library load? (y or [n]) y 
Breakpoint 1 (func) pending. 
+0

Не совсем моя проблема. Как это сделать, когда gdbserver не находит исходные файлы библиотеки? – Joster

Смежные вопросы