Отладка параллельных программ на Go. Андрей Солдатенко

preview_player
Показать описание
Интерес к параллельному программированию в последнее время резко вырос. К сожалению, параллельные программы не всегда имеют воcпроизводимое поведение. Даже когда мы запускаем программу с одинаковыми входными параметрами, результаты могут значительно отличаться. В этом докладе я покажу разные подходы к тому, как можно отлаживать параллельные программы на Go.
Начну свой доклад с отладки горутин с помощью дебаггеров: delve и gdb. Чтобы лучше понять работу горутин, я покажу как визуализировать поведение горутин в различных сценариях.
Следующая часть посвящена дампу стэка горутин вашего приложениях во время исполнения и проверки того, что сейчас делает каждая горутина.
В конце, я продемонстрирую как отладить утечку горутин с помощью трэйсинга процессов запуска горутин с помощью scheduler'а на логических процессорах, которые связаны с физическим процессором тредами операционной системы.
В качестве бонуса расскажу о паре трюков, которые помогут находить дэдлоки и избегать race conditions в ваших приложениях.
Рекомендации по теме