| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > чем искать ошибку блокировки мьютекса? |
| Автор: boostcoder 14.11.2010, 15:58 | ||
| всем привет. есть код написанный на С++, преимущественно с использованием boost. код многопоточный. в некоторый момент ловлю исключение:
по последней строке, могу судить о том, что что-то с блокировкой мьютексов. а их в коде не мало. собственно вопрос: как понять где/откуда бросается исключение? какие тулзы/инструменты использовать? работаю в QtCreator. так и не понял как в нем можно просмотреть стек вызовов. спасибо. |
| Автор: bsa 14.11.2010, 19:23 |
Поставь точку останова на throw (делается когда программа уже запущена) В режиме отладки внизу на левой половине окна. |
| Автор: boostcoder 14.11.2010, 19:28 |
в том то и дело, что после этого throw, программа просто завершается. сама в режиме отладки стек-то есть. а вот как бы его увидеть когда программа уже упала?.. |
| Автор: bsa 15.11.2010, 00:01 |
| boostcoder, а ты случаем не в режиме release собрал прогу? В режиме отладки программа в случае ошибки останавливается и ждет от тебя действий. |
| Автор: bsa 15.11.2010, 00:42 |
| boostcoder, я тебе говорю, или ты не под отладчиком запустил, или у тебя программа в релизе. Добавлено через 1 минуту и 24 секунды А, я забыл, что у тебя не сегфолт, а исключение... Тогда действительно будет нормально завершаться, если точки останова не понаделал. В т.ч. и на throw. Попробуй еще "синхронизировать" точки останова. |
| Автор: boostcoder 15.11.2010, 01:09 |
это что? как? |
| Автор: MAKCim 15.11.2010, 13:08 | ||||
| boostcoder, обычно правильное логирование решает все проблемы ;) Добавлено через 7 минут и 51 секунду еще можно через set_terminate поставить свой обработчик и на него уже бряк
|
| Автор: boostcoder 20.11.2010, 22:45 |
| как-то недопёр спасибо. помогло. |