У меня есть многопоточная программа на C++. Основной поток вызывает конструктор (ctor). Затем Ctor создает поток с помощью std::thread, используя лямбда-функцию.
Внутри лямбды он порождает другой поток и отсоединяет его. Этот внутренний поток запускает жесткий цикл, отслеживающий системную шину.
В конце внешней лямбда-функции есть еще один жесткий цикл, который отслеживает что-то еще. Основной поток использует метод boost io context run.
Я хочу прерваться в точке выхода из одного из этих потоков. Поэтому я открываю их с помощью GDB, ставлю точку останова на pthread_exit и pthread_enter, а также ловлю throw, чтобы перехватывать любые исключения.
Я нажимаю точка останова pthread_enter, однако ни одна из других точек останова не сработает. Я пробовал пошаговый режим, и в определенный момент все LWP завершаются, но ни одна из других точек останова не срабатывает.
Мне интересно, почему это так и как мне нужно выяснить, что заставляет эти темы умирать сами по себе?
Подробнее здесь: https://stackoverflow.com/questions/793 ... g-with-gdb