Итак, я пытался отладить программу, которая работает на двух узлах. Я использую yod в качестве загрузчика задач.
yod -hosts node01,node02 ./dist_task -nl 2
Программа зависла. Поэтому я хотел использовать gdb вот так
yod -hosts node01,node02 gdb ./dist_task
Я в сеансе gdb в node01, но для node02 я не могу. Что происходит, я вижу, что процесс выполняется (gdb ./dist_task) на удаленном узле (node02 от htop), но я не могу войти в него. Я попробовал выполнить присоединение (я просто пытаюсь присоединить к процессу gdb), как обычно мы делаем с процессом, но в моем случае, поскольку это уже gdb, я получаю информацию о gdb, но не о процессе.
ps: Я пробовал сделать это через xterm, но и там не получилось (я не могу вставить два xterm)
решение1
Вы злоупотребляетеattach
Из документов:
attach process-id
This command attaches to a running process—one that was started outside gdb
Вы можете попробовать запустить их, а yod -hosts node01,node02 ./dist_task -nl 2
затем подключиться к ним с помощью attach
команды из командной строки gdb или с помощьюgdb -a <pid>