Использование целевого удаленного локального хоста: 26000 - PullRequest
0 голосов
/ 03 мая 2018

Я пытался отладить локально xv6 (это 32-битный код). Но я работаю на 64-битной машине, и мой GDB является 64-битной. Всякий раз, когда я печатаю

make gdb

Я обнаружил следующую ошибку

+ target remote localhost:26000
.gdbinit:23: Error in sourced command file:
localhost:26000: Connection timed out.
(gdb) target remote localhost:26000
localhost:26000: Connection timed out.

У меня есть файл .gdbinit. У меня есть следующая строка

целевой удаленный локальный хост: 26000

В этой строке возвращается ошибка. Сначала я думал, что это из-за 32-битной архитектуры моей машины. Но если я захожу в другой каталог и набираю то же сообщение в консоли gdb, я получаю ту же ошибку. На самом деле я не могу понять, почему он должен подключаться к localhost (то есть, для чего здесь нужен сервер?), Так как GDB - это обычный отладчик GNU, верно? и какова причина его отказа в вышеуказанном случае?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 21 сентября 2018

Я только что решил ту же проблему, которую вы описали. Вы можете взглянуть на файл GNUmakefile, чтобы найти номер порта, к которому пытался подключиться ваш gdb-qemu. В моем GNUmakefile номер порта # try to generate a unique GDB port GDBPORT := $(shell expr id -u % 5000 + 25000)
Поэтому, когда я пытаюсь запустить sudo make gdb-qemu, я получаю следующий результат:

qemu-system-i386 -drive file=obj/kern/kernel.img,index=0,media=disk,format=raw -serial mon:stdio -gdb tcp::25000 -D qemu.log  -S  

Но когда я запускаю другой терминал для запуска sudo make gdb, я получаю результат:

Type "apropos word" to search for commands related to "word".
+ target remote localhost:26000

Номер порта не совпадает.
Таким образом, просто изменив номер порта в GNUmakefile на 26000, мы можем получить идеальные результаты.
Надеюсь, это полезно:)

0 голосов
/ 06 февраля 2019

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

  1. make qemu-gdb enter image description here

  2. make gdb (в другом терминале.)

Причина этой проблемы заключается в том, что при выполнении команды make gdb вы прекращаете выполнение make gdb . Так что время соединения с сервером qemu истекло. На рисунке мы не можем найти такую ​​информацию, как удаленный порт GDB ...

0 голосов
/ 03 мая 2018

Ваш вопрос не имеет никакого смысла (для меня).

Насколько я могу судить, вы спрашиваете: "почему GDB пытается подключиться к localhost: 2600".

Ответ таков: потому что вы попросили GDB сделать это с помощью записи target remote localhost:26000 в вашем ~/.gdbinit.

Обновление:

Я спрашиваю, что делает эта команда?

Он инструктирует GDB выполнять удаленную отладку и подключаться к gdbserver прослушиванию на данном порту.

В общем, вы никогда не должны помещать в ваш ~/.gdbinit (или любой другой файл инициализации) что-то, что вы не понимаете. Это похоже на то, как вы берете неизвестный предмет (пистолет), прикладываете его к голове и нажимаете на маленький рычаг сбоку (курок).

и его выполнение дает мне вышеуказанную ошибку, так что вы можете сказать, в чем ошибка и как это решить

Просто удалите команду (и любые другие команды, значение которых вы не знаете) из ~/.gdbinit.

...