GDB продолжить после присоединения - PullRequest
0 голосов
/ 20 февраля 2019

Я отлаживаю программу с несколькими процессами, используя GDB.Существуют два разных процесса, запускаемых основной программой.Давайте назовем их p1 (процесс, который запускается и в конечном итоге запускает p2) p2 (процесс, который запущен и к которому я хочу подключиться)

Хитрость заключается в том, что мне нужно присоединиться к p2 и разбить наточка в его процессе ТОЛЬКО после точки останова в p1.

По сути, я обнаруживаю, что выполняю:

gdb p1
(gdb) break foo
(gdb) attach <pid of p2>
(gdb) break bar

Где pid определяется путем выполнения команды ps на другой вкладке, пока p1сломано.

Проблема в том, что при подключении к p2 p1 все равно нарушается.Действительно, точки продолжения, присоединения и новые точки останова должны выполняться одновременно.Как мне это сделать?

1 Ответ

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

Сделайте две клеммы: 1 и 2.

Выполните следующие шаги:

  1. В клемме 1, gdb p1.break foo.
  2. В терминале 1, run.
  3. Точка останова будет достигнута в p1 и p1 остановится.
  4. Теперь процесс p2 будет запущен(поскольку p1 начал работать).
  5. В терминале 2. откройте gdb и присоедините p2.Добавьте точку останова в p2.
  6. continue в клемме 1. И перейдите в клемму 2.
  7. Вы увидите, что точка останова достигнута в p2 в bar.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...