Я пытаюсь отлаживать пользовательскую реализацию пула потоков, которая редко срабатывает. Поэтому я не могу использовать отладчик вроде gdb, потому что у меня есть клик, как 100-кратный отладчик "запуска", перед тем, как зайти в тупик.
В настоящее время я запускаю тест threadpool в бесконечном цикле в оболочке script, но это означает, что я не вижу переменных и т.д. Я пытаюсь использовать данные std::cout
, но это замедляет поток и уменьшает риск взаимоблокировок, что означает, что я могу подождать как 1 час с моим бесконечным до получения сообщений. Тогда я не получаю ошибку, и мне нужно больше сообщений, что означает ожидание еще одного часа...
Как эффективно отлаживать программу, чтобы ее перезапуск снова и снова до тех пор, пока она не будет заблокирована? (Или, может быть, я должен открыть другой вопрос со всем кодом для некоторой помощи?)
Заранее благодарю вас!
Бонусный вопрос: как проверить, все ли в порядке с std::condition_variable
? Вы не можете сказать, какой поток спал или если условие гонки происходит в состоянии wait
.