У меня есть приложение C ++, работающее на встроенной платформе arm7hf arch. У двоичного файла есть символы, удаленные с помощью objcopy (шаги man-страницы для флага objcopy —only-keep-debug 3 steps). Удаленные символы сохраняются в файле x.debug.
У меня есть кросс-скомпилированное приложение, работающее на моей встроенной системе. Когда вы вошли во встроенную систему, я могу запустить gdb и загрузить раздетые символы с помощью gdb> symbol-file ./path/to/x.debug
тогда когда я ломаю все выглядит отлично! Поэтому я подтвердил, что символы правильные и могут использоваться GDB для отладки.
То, что я действительно хочу сделать, это удаленная отладка с использованием gdbserver и gdb-multiarch. я бегу gdbserver --attach $(pidof ProcName)
на встроенной системе и на Ubuntu 14.04 LTS я запускаю gdb-multiarch ./path/to/arm7hf/ProcName
,
Я пытался использовать флаг для GDB-Multiarch -symbols=./path/to/x.debug
и я попытался сделать команду GDB gdb> symbol-file ./path/to/x.debug
без завесы Когда я пытаюсь сломаться или получить ошибку Cannot access memory at address 0x1
, После некоторых исследований эта ошибка, по-видимому, означает, что GDB не имеет символьной информации.
Может ли кто-нибудь дать совет, что я делаю неправильно на стороне клиента (Ubuntu GDB-Multiarch)
Задача ещё не решена.
Других решений пока нет …