2016-08-24 6 views
0

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

GNU strip отбрасывает все символы из объектных файлов (скомпилированные с -g). Итак, разве это не равно двоичному скомпилированному без -g? Почему это не работает?

+0

-g также отключает оптимизацию, которая включена по умолчанию, поэтому она не эквивалентна удалению исполняемого файла. –

+0

@ н.м. Вы ошибаетесь: для GCC флаг '-g' действительно * не * влияет на оптимизацию * вообще *. –

+0

@EmployedRussian вы правы, должен быть еще один миф, перенесенный из старых плохих дней с многочисленными собственными-unixes. –

ответ

0

На хосте я попытался использовать двоичный файл, скомпилированный без -g вместо разделенной копии, но это не сработало.

Вы получили это обратное: вам нужно удалить двоичный код цели и полный отладочный двоичный файл на хосте.

gdbserver делает не необходимости (или использование) отладочной информации производится с помощью -g, gdb делает.

Лучше не компилировать в два раза, а компилировать один раз -g, то:

cp a.out a.out.stripped 
strip -g a.out.stripped 

и сохранить как полную отладку и раздели бинарного вместе.

+0

Извините, вы правы, цель и хост в описании были заменены. Я исправил свой вопрос. Благодаря! – xaverius

+0

Вернуться к моему вопросу: Будет ли работать полоса без -g, чтобы удалить ВСЕ символы? Если это так, я предполагаю, что не рекомендуется компилировать дважды, так как мы не знаем подробно, что делает компилятор. – xaverius

+0

@xaverius Полностью зачистка всех символов также должна работать, но есть ошибки в 'strip', такие как https://sourceware.org/bugzilla/show_bug.cgi?id=11786 –