Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> gdb.родительский и дочерний процесс 
:(
    Опции темы
IoganeGambaPuti
Дата 18.2.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Здравствуйте!
Код

//~/someprocess.c
void main(void)
{
.........
    if( (childpid=fork())==0) { /*child*/
..........
    }
waitpid(childpid,NULL,0);
exit(0);
}


Вообщем проганяю в отладчике код и после fork() делаю точку останова.Далее с родителем всё понятно,а как посмотреть на дочерний процесс?Я запускаю gdb в другой консоле:
Код

gdb>attach childpid

Но получается вот что:
Код

gdb>n
Single stepping until exit from function __kernel_vsyscall, 
which has no line number information.

Он исходный файл не может найти или что?
PM MAIL   Вверх
MAKCim
Дата 18.2.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



смотри в сторону параметров gdb
Цитата

(gdb) help set follow-fork-mode
(gdb) help detach-on-fork



--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
IoganeGambaPuti
Дата 19.2.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Спасибо. Переключиться после вызова fork с родителя на сына с помощью "set follow-fork-mode child" получилось,но назад уже никак. А насчёт моей беды с attach никаких мыслей нету? Почему когда я к процессу подключаюсь,gdb как будто не видит отладочной информации?И после
 комманд next или step выдаёт это дурацкое 
Код

Single stepping until exit from function __kernel_vsyscall, 
which has no line number information.


Это сообщение отредактировал(а) IoganeGambaPuti - 19.2.2009, 17:18
PM MAIL   Вверх
vinick
Дата 20.2.2009, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 4
Всего: 22



Цитата(IoganeGambaPuti @  19.2.2009,  17:18 Найти цитируемый пост)
Single stepping until exit from function __kernel_vsyscall, 

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

Лучше первый вариант, финишем можешь не выбраться.

Это сообщение отредактировал(а) vinick - 20.2.2009, 05:42
PM MAIL ICQ Jabber   Вверх
IoganeGambaPuti
Дата 20.2.2009, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Спасибо ребят,вроде разобрался.Вообщем когда родитель создаёт дочерний процесс fork`ом,я открываю ещё один tty и там gdb>attach к сыну,но что самое интересное ,этот дочерний процесс начинает выдавать себя за нового родителя,и в свою очередь опять вызывает этот же самый fork и получается третитий сын и т.д..Ошибка
Код

Single stepping until exit from function __kernel_vsyscall,

получается,если после присоединения к новому процессу attach`ем ни задав ни одного брэкпоинта попробывать по нему пройтись next`ом или step`ом.Если сначало установить точку останова всё нормально.
Вообщем вывод.Attach использовать при отладке родственных процессов нельзя,а надо пользоваться follow-fork-mode, не совсем удобно,но всё же.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0447 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.