У меня есть gdbserver
, подключенный к процессу и нормально работающий на удаленной машине, порт 9999. На моей локальной машине из командной строки:
$ gdb
(gdb) target remote localhost:9999
работает просто отлично. Я пытаюсь настроить отладчик Vs Code, чтобы в этом случае у меня был внешний интерфейс GDB. Вот мой запуск JSON.
"version": "0.2.0",
"configurations": [
{
"name": "GDB",
"type": "cppdbg",
"request": "attach",
"miDebuggerServerAddress": "localhost:9999",
"program": "path-to-cross-compiled-binary-with-same-debug-symbols",
"linux": {
"MIMode": "gdb",
},
}
]
Здесь есть несколько проблем. Прежде всего, почему «программа»? В этом случае для запуска GDB не требуется имя программы. Программа уже запущена на удаленном компьютере, к ней уже подключен gdbserver. Я просто хочу, чтобы клиент gdb подключился к порту 9999. Но в любом случае, продолжаю.
Он хочет, чтобы я дал processId. Это также не имеет смысла, я уже подключен на пульте. Интересная часть:
- Если вы не указали processId, Vs Code говорит, что «невозможно проанализировать идентификатор процесса»
- Если вы укажете processId, Vs Code говорит: «ProcessId не может бытьиспользуется с miDebuggerServerAddress "
Конечно, если я использую адрес сервера отладчика, сервер уже подключен к PID, и имеет смысл, что processId не может быть использован в этом случае. Но если я пропущу это, VS Code выдаст 1. ошибку. В некотором смысле это циклично.
Любой может подключиться к удаленному процессу в отладчике VS Code C ++ с адресом gdbserver, это мой вопрос. Что не так с моим файлом запуска?