![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
Perovskit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
Где-то в многопоточной программе возникает взаимоблокировка мьютексов. Останавливаю через SIGINT в GDB. Выбираю поток в котором, скорее всего, и есть ошибка, далее:
Причем это в двух потоках (вероятно, блокирующих друг друга), но здесь непонятно, в какой функции или какой мьютекс работают некорректно. Можно ли в GDB в реальном времени смотреть за вызовами функций определенного потока? Пошаговое выполнение не устраивает, так не знаю, как воспроизвести ошибку -- она где-то раз в полчаса происходит. Очень не хочется перед каждым захватом мьютекса делать cout << "Locking in f()" << endl; |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
а зря нет, серьезно, логгирование в многопоточных программах - лучшее решение при грамотном логгировании проблема всплывает сама собой -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Perovskit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
Спасибо.
Проблему решил. Проблема чисто в недостатке опыта работы с многопоточными приложениями. По ходу возник вопрос -- не попадались ли кому-нибудь статьи по проектированию на С++ многопоточных приложений? Интересуют именно советы для общих ситуаций. |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
Perovskit,
могу посоветовать стараться не использовать глобальные переменные (даже с синхронизацией) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |