2017-01-27 2 views
1

Я пытаюсь отлаживать удаленную цель, которая не поддерживает запуск или перезапуск без контрольной точки. Единственный доступный пользователь - root, поэтому не должно быть никаких проблем с разрешением. Я пробовал:Удаленная ошибка контрольной точки/вилки GDB

Breakpoint 1, main (argc=4, argv=0x7fffffffe348) at foo.cpp:40 
(gdb) checkpoint 
checkpoint -1: fork returned pid 6145. 
Failed to find new fork 
(gdb) i checkpoints 
No checkpoints. 

Кто-нибудь знает, как получить работу на работу? Или как я могу проверить, что на самом деле заставляет вилку терпеть неудачу и предотвратить контрольную точку?

+0

Очевидно, что основная реализация не выполняется. Это действительно похоже на ошибку, по крайней мере, так, как она обрабатывается ... –

+0

Я получил работу, используя ответ от netskink, но вилка контрольной точки все еще терпит неудачу, даже если используется флаг командной строки «--multi» , –

ответ

1

После нескольких экспериментов, добавьте следующие строки в файл .gdbinit

target extended-remote <host>:<port>

Это должно позволить вам использовать команду запуска, устраняя необходимость использования рестарта.

0

Как только вы откроете путь, как восстановить контрольно-пропускной пункт? Контрольная точка выполняет перемотку в состояние сохранения процессов в момент времени. Как только развивается вилка, я предполагаю, что контрольная точка будет существовать только для первоначального процесса.

В руководстве есть такая запись:

Наконец, есть один бит внутреннего состояния программы, которая будет отличаться , когда вы вернетесь к контрольной точке - идентификатор процесса программы. Каждая контрольная точка будет иметь уникальный идентификатор процесса (или pid), и каждый из них будет быть отличным от исходного pid программы. Если в вашей программе сохранена локальная копия идентификатора процесса, это может потенциально создать проблему .

Что касается требуемого использования контрольных точек для выполнения перезапуска на удаленных сеансах. Раньше я никогда не использовал контрольные точки, но я перезапустил многие удаленные сеансы.