Я нахожусь в ситуации, когда программа, которую я должен отлаживать, должна быть запущена в изолированной среде. Прямо сейчас я установил gdb в другом корне и скопировал исходники, что работает для элементарной установки, но не очень удобно, так как мне приходится повторно синхронизировать источник каждый раз, когда я делаю изменения и перекомпилирую, и мне нужно скопировать через все мои настройки GDB и т. д.
Есть ли какой-нибудь способ, которым я могу запустить отладчик в моей обычной среде, чтобы отладить программу, которая работает в изолированной среде? Я на Arch Linux.
Вы можете использовать удаленную отладку:
В chroot вам нужна только ваша обычная среда выполнения плюс программа gdbserver
, Затем запустите:
chroot$ gdbserver :8888 myprogram
В среде разработки из исходного каталога вы запускаете gdb
и подключите его к серверу
$ gdb myprogram
(gdb) target remote :8888
И вы можете начать отладку.
я люблю делать br main
до continue
потому что отладчик будет остановлен в _start
слишком рано, чтобы быть полезным.
PS: Имейте в виду проблемы безопасности при использовании удаленной отладки, так как 8888 является TCP-портом прослушивания.
Других решений пока нет …