Программисты давно подозревали, что Visual Studio C++ автоматически добавляет в компилируемые программы вызовы функций, которые собирают данные телеметрии для Microsoft. На этот раз разработчики Visual Studio объяснили, что это за вызовы, зачем они нужны, что с ними делать, и когда же этому придёт конец.
Новая волна интереса к теме последовала за постом на Reddit. Его автор обратил внимание на то, что в скомпилированных при помощи Visual Studio C++ исполняемых файлах появляется вызов функции telemetry_main_invoke_trigger. В исходниках этой функции нет, а её название позволяет предположить, что она каким-то образом связана со сбором данных телеметрии Microsoft.
Дополнительное изучение вопроса показало, что такое поведение свойственно лишь Visual Studio 15. Вызовы телеметрических функций появляются и в отладочных, и в финальных сборках. Насколько можно судить, они сохраняют информацию, но не отправляет её Microsoft.
Агрессивный сбор данных телеметрии уже становился поводом для скандала. Windows 10 передаёт Microsoft сведения о компьютере, установленных приложениях и драйверах, а также о некоторых аспектах его работы. Предполагается, что телеметрия помогает разработчикам Windows идентифицировать и решать проблемы, связанные с безопасностью и надёжностью. Критики Microsoft сравнивают сбор данных телеметрии со слежкой и требуют его отключить.
Пост на Reddit с жалобой на Visual Studio привлек внимание Microsoft. Представитель компании вмешался в обсуждение и рассказал, что в действительности происходит. По его словам, задача, которую призваны решать эти вызовы, совершенно невинна. Они собирают информацию о проблемах с производительностью, чтобы помочь установить их причины и в перспективе улучшить качество оптимизатора.
Он объяснил, что телеметрические функции, которые встраивает Visual Studio C++, срабатывают в случае появления событий ETW. Для интерпретации данных о событиях неоходима отладочная информация (PDB), которой у Microsoft нет. Это означает, что собранные сведения могут быть использованы лишь в том случае, если пользователь сам обратится в Microsoft и предоставит компании всё необходимое для расследования. В реальности этого пока ни разу не случалось.
Microsoft планирует убрать эту функциональность в третьем апдейте Visual Studio C++. Пока этого не произошло, программист может избежать включения телеметрических функций, добавив в командную строку компоновщика notelemetry.obj.