В настоящее время я отлаживаю многопоточное приложение (pthread под Linux ia64, ARM).
valgrind, helgrind и gdb - мои используемые в настоящее время инструменты.
Есть некоторые проблемы с синхронизацией и для последующего анализа,
Я хочу записать выполнение потока в один или несколько файлов.
Наивная реализация будет делать некоторые записи / fprintf, которые могут
(в зависимости от реализации libc) блокирует некоторый внутренний мьютекс.
Это, в свою очередь, повлияет на поведение программы
(Я бы назвал это «запиранием случайно»)
и, следовательно, не приемлемо.
Поиск в Интернете дает только обратное решение,
т.е. как синхронизировать потоки соотв. как войти.
Примечание: сторонние библиотеки журналов имеют тенденцию обеспечивать безопасность многопоточности
но не наоборот, как описано выше.
Итак, я придумал несинхронизированное кэширование записей журнала в памяти,
для каждого потока и сбрасывает его в файл при выходе из программы.
Я думаю, что это общая проблема для многих разработчиков и
Интересно, есть ли лучший подход.
Есть предложения?