Удаленная отладка GDB - PullRequest
       5

Удаленная отладка GDB

13 голосов
/ 18 августа 2010

Я только что провел целый день, пытаясь найти способ включить отладку GDB с Qt Creator или Eclipse. Я узнал, что есть два основных подхода к запуску целевого приложения:

  • Использование ssh (ssh host gdb)
  • Использование gdbserver

Мне удалось использовать оба подхода для удаленного запуска GDB и запуска приложения. Однако GDB никогда не реагирует на какие-либо точки останова, установленные в IDE. Также я не могу приостановить приложение, чтобы проверить состояние программы. В Qt Creator я просто получаю малоизвестную трассировку стека (возможно, я действительно просматривал следы ssh или gdb ...).

Может кто-нибудь помочь мне начать?

Прогресс!

Я обнаружил, что в Qt Creator 2.0 есть функция под названием «Присоединить и отладить удаленное приложение». Он основан на gdbserver. Хорошо, что он останавливается на контрольных точках IDE. Однако есть две проблемы:

  • Когда он достигает точки останова, он показывает только код сборки, а не исходный код.
  • GDB часто завершает работу из-за 'принятого сигнала'

Вероятно, я должен упомянуть, что удаленный исполняемый файл скомпилирован с более старой версией GCC, чем та, которая установлена ​​на моем локальном ПК. Возможно, некоторые проблемы связаны с этим.

Обновление

Следует отметить, что я перешел на запуск cgdb на удаленном компьютере через SSH.

Удаленное решение на основе Qt Creator не было стабильным. GDB имеет тенденцию выходить из-за таинственных сообщений «сигнал получен».

Ответы [ 2 ]

7 голосов
/ 18 августа 2010

Чтобы GDB на вашем хосте (машине, которую вы разрабатываете и компилировали, и где у вас есть Qt Creator) вы должны предоставить ему доступ к «файлу символов».

Я обычно не используюQt Creator, но GDB и gdbserver напрямую для кросс-скомпилированных программ удаленной отладки.Вы можете попробовать попробовать, чтобы убедиться, что это работает для вас, и, возможно, найти пропущенную опцию в Qt Creator (или, возможно, это поможет вам найти то, чего не хватает).

На целевой машине запустите:

gdbserver :5000 yourprogram

На хост-компьютере запустите gdb, а затем загрузите файл символов:

(gdb) symbol-file yourprogram

На GDB на хост-компьютере вам необходимо подключиться, чтобы подключить GDB к удаленномуgdbserver:

(gdb) target remote target_ip_address:5000

С этого момента вы можете использовать GDB на хосте, управляющем программой на цели.

Надеюсь, это поможет!

3 голосов
/ 19 августа 2010

Из-за особенностей нашей системы сборки make-файла ссылки на файлы, содержащиеся в символах отладки, выглядят так:

../src/main.cpp
../../src/utils/logger.cpp

Это не проблема для GDB, но Qt Creator не смог сопоставить эти пути с реальными файлами. Мне удалось это исправить, добавив операторы 'dir' в файл инициализации GDB:

dir src
dir src/utils
...

Теперь это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...