Остановка низшего процесса в GDB БЕЗ сигнала? - PullRequest
4 голосов
/ 09 июля 2009

Есть ли способ остановить подчиненное без использования Ctrl + C (или эквивалентного сигнала, отправленного из другого процесса?) Я использую платформу Windows и управляю GDB из другого процесса, поэтому без понятия сигналов это кажется, что нет хорошего способа прервать выполнение моей программы, когда она работает без каких-либо точек останова.

РЕДАКТИРОВАТЬ ДЛЯ ЯРКОСТИ:

Здесь задействованы 2 процесса. Есть процесс A, который является родителем GDB. GDB управляет процессом, но находится на удаленном хосте, и мы назовем этот процесс C.

Когда я говорю GDB «запустить», он запускает процесс C на удаленном хосте и блокирует либо до достижения точки останова, либо процесс C сталкивается с ошибкой или фатальным сигналом, либо сам GDB получает сигнал прерывания. Если вы работаете в интерактивном режиме, вы просто нажимаете CTRL + C на командной консоли GDB, которую GDB интерпретирует как SIGINT (как-то), вызывая GDB для остановки процесса C. Поскольку я фактически управляю GDB процессом A (а не имею дело с ним) интерактивно в оболочке) Я не очень хорошо нажимаю Ctrl + C, и, поскольку у Windows нет собственного понятия «Сигналы», как у вас в UNIX, я не могу понять, как прервать GDB, когда он блокирует ожидание процесса C прервать или достичь точки останова.

1 Ответ

2 голосов
/ 03 декабря 2010

Вы пытались взглянуть на протоколы дистанционного управления? например, EMACS использует MI для управления GDB, вы должны проверить, как / если они предлагают такой ctrl-C механизм, и как они его реализуют.

РЕДАКТИРОВАТЬ: это, кажется, -exec-interrupt, который прерывает выполнение.

...