QNX RTP Logo QNX Realtime Platform: Русский Портал QNX
Thursday, 20 Nov 2008 10:10
Меню

Проект OpenNET - все о Unix
Главная

 · Начало · Статистика · Поиск ·

  QNX.ORG.RU —› Программирование под QNX 4.x —› Hard-coded breakpoint

Посл.ответ Сообщение


Дата: 21 Май,  11:11

Всем здравствуйте.

Столкнулся с непонятной ситуацией. Есть 4 одинаковых процесса, каждый из которых по сути HTTP-клиент. С некой периодичностью запрашивает определенный файл. Если их запустить и не залезать в отладчик - всё работает как надо. Но как только один из процессов подхватываю wd. Остальные отваливаются. Причем иногда по одному, иногда все сразу. Запустив сразу все 4 в отладчике, 3 из них вывалились с ошибкой "Hard-coded breakpoint instruction encountered". Хотелось бы понять, что это за зверь и с чем его едят. Гуглинг особо не помог


Дата: 21 Май,  12:28

Очень похоже на то, что все 4 процесса используют один физический сегмент код для исполнения. В таком случае, если установить брейкпоинт (int3) в одном процессе, то в остальных он тоже будет присутствовать. Т.к. остальные процессы находятся в отладке, то они, встретив брейкпоитн, офигевают от такого расклада и отваливаются...
Давно уже не работал в четверке, так что не могу сказать так ли это... но похоже именно на это.
Как вариант борьбы с таким произволом отладчика, попробуйте скопировать программу 4 раза и запустить все процессы из разных бинарников.


Дата: 21 Май,  13:10

Действительно, после запуска из разных бинарников подобная ситуация не возникает. Только вот как быть в случае если порождается дочерний процесс через fork/exec ?


Дата: 21 Май,  14:48

Absolut
Только вот как быть в случае если порождается дочерний процесс через fork/exec ?

Не вижу проблемы или не понял вопроса. Где сложность?


Дата: 21 Май,  15:43

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


В первом случае я размножил бинарники под именами prog1, prog2 ... progN.

При fork/exec бинарник один и тот же.

Или может я уже чего-то не понимаю


Дата: 21 Май,  16:29

можно всегда сделать
system(cp my_bin /tmp/my_binX)
spawn(/tmp/my_binX)
а потом удалить...
но это не сильно хорошо.
С другой стороны, в рабочей системе далеко не всегда надо отлаживать процессы...

You must login to post.

©   2000-2003 Команда проекта QNX.ORG.RU // QNX.ORG.RU Team
Авторы проекта: Дмитрий Алексеев [dmi] и Дмитрий Васильев. Техническое сопровождение проекта: Игорь Сорокин [isorokin]. Информационное сопровождение: Дмитрий Алексеев [dmi]
QNX - зарегистрированная торговая марка QNX Software Systems, Ltd., Canada. Остальные упоминаемые на сайте торговые марки и логотипы являются исключительно собственностью их уважаемых владельцев. Ничьи права не затронуты. Материалы сайта не могут быть скопированы и где-либо использованы в той или иной форме без письменного разрешения разработчиков сайта.
Powered by Mambo Open Source