Що таке pgrp в цьому контексті?


2

Цитується звідси .

gdb ставить процес налагодження у власний pgrp та встановлює термінал цьому pgrp. (Спробуйте, наприклад, ps j на PID-кодах gdb та налагодженій програмі.)

І що це означає під

ps j на PID-кодах gdb та налагодженій програмі

це означає ps j PID?

З цього я нічого не отримую ...

Я взагалі не розумію, про що йдеться у цій статті, чи може хтось пояснити її більш докладно?

Відповіді:


2

"Pgrp" - це процесна група . ps jперелічує ідентифікатор групи процесів (стовпець називається PGID). PGID процесу, як правило, сам або його батьківська група процесів, але їх можна довільно задати setpgid(). Групи процесів контролюють, які процеси отримують сигнали управління роботою. Я думаю, що gdb переміщує процес у свою власну групу, щоб уникнути того, щоб процес отримував сигнали управління роботою, які б зіпсували контроль gdb над процесом.

Звіт про помилку стосується використання gdb з програмою, яка використовує sigwait. sigwaitдозволяє процесу отримувати сигнал непомітно: замість того, щоб його доставляти до процесу звичайним чином, сигнал видаляється з чергової черги і sigwaitповертається. Це в основному корисно, щоб домогтися того, щоб сигнал завжди надходив до певної нитки: блокуйте сигнал, але потік споживає його запускаючи sigwait.

Оскільки сигнал фактично не доставляється в процес, ptraceнічого не бачить, і тому gdb не повідомляється про те, що процес недостатньо споживає сигнал.

Дискусія у звіті про помилки полягає у тому, чи слід ядро ​​модифікувати так, щоб ptraceбачити щось, коли сигнал поступає через нього sigwait, чи чи gdb має вирішувати цю ситуацію по-іншому. Я недостатньо знаю про це, щоб стати стороною.


Ви розумієте пояснення в цій помилці, яка говорить, що це не помилка?
locale

@locale: Я розширив свою відповідь, але вирішити, помилка чи ні, не виходить за рівень мого досвіду. PS Це стає дійсно на територію розробника; Я рекомендував перенести ваше запитання на переповнення стека , і рекомендую створити там обліковий запис і пов’язати його з вашим обліковим записом Fault Server .
Жиль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.