Страницы

Поиск по вопросам

среда, 10 октября 2018 г.

Методы отладки и тестирования многопоточных приложений

Расскажите, пожалуйста, о способах отладки и тестирования многопоточных приложений.
Есть ли у вас какие-то любимые, проверенные методики, может утилиты, которые будут полезны (исключая уже много раз мною упомянутый Valgrind)?
На что при тестировании следует обратить особое внимание?
В общем всё, что подойдет относительно начинающему. Работаю в Freebsd с posix_thread


Ответ

@margosh, я тупо ставлю printf-ы в которых обязательно печатаю еще и thread id. Если прога падает (SIGSEGV и т.п.) смотрю gdb. Он сообщает в каком потоке свалилось. Вообще, все более-менее нетривиальные функции стараюсь сначала отладить в однопоточном варианте (просто из main). Многопоточную логику сначала выделяю в некие тестовые куски (без реального наполнения данными задачи) и просто играюсь с ней (опять printf-ами, слипами, где-то ввод с клавиатуры и запись в какой-нибудь пайп и т.д.). Ну, и черкаю ручкой на бумаге линии потоков, какие события и когда происходят и т.п. -- В целом так, но реально я иногда просто вижу алгоритм в виде каких-то цветных и объемных фигурок, которые двигаются, сливаются, меняются ... и тогда мне становится ясно, как это можно программировать.

Комментариев нет:

Отправить комментарий