Visual studio отключить средства диагностики

Обновлено: 07.07.2024

У меня есть проект, использующий CMake, который не может скомпилировать этот код на VS 2015 из-за ошибки компилятора. (взаимодействие между разрешением шаблона, оптимизацией и обработкой исключений).

Этой ошибки можно избежать, отключив оптимизацию - хотя это дает неоптимальный код, по крайней мере, проект компилируется.

Как мне изменить уровень оптимизации по умолчанию для MSVC 2015 на /O0 в сборках Release и RelWithDebInfo ?

Моя наивная реализация была бы условной заменой в CMAKE_CXX_FLAGS - безопасно ли это в будущем?

3 ответа

Эта ошибка компилятора мешает компоновщику мусором, насколько я могу отследить проблему (VS2015 является новым, на момент написания этой статьи не было выпущено никаких патчей / обновлений). В компоновщике происходит сбой. Похоже, компилятор считает, что все прошло хорошо.

Когда эта ошибка «возбуждена», проблема заключается в коде, который использует сгенерированный объект шаблона. Другими словами, даже если вы отключите оптимизацию в заголовке, но снова включите оптимизацию в теле, это все равно приведет к сбою компоновщика. Что «работает», так это отключить оптимизацию кода, который создает экземпляры и использует функции-члены объекта шаблона (вы можете оставить оптимизацию для всего кода за пределами этой цели).

Например, в коде, опубликованном в вопросе, оставьте оптимизацию во всех заголовках. В функции, которая ИСПОЛЬЗУЕТ шаблон, выполните:

Это изолирует потерю оптимизации для того кода, который воспламеняет проблему, и компоновщик преуспевает.

Конечно, сами прагмы могут быть обернуты условными определениями или каким-либо другим механизмом, который вы можете отключить после выпуска патча для VS2015, который устраняет проблему.

Таким образом, код можно использовать, не беспокоясь о конфигурациях сборки (то есть, он будет работать как для сборки CMAKE, так и для сборки IDE) без необходимости обременять последующих пользователей кода (с чем-либо, кроме определения, чтобы контролировать, выполняется ли оптимизация. отключен).

Если это возможно в вашей ситуации, вы также можете попробовать что-то вроде:

Такой вид повторного написания кода позволяет обойти ошибку и компилировать без сбоя компоновщика.

Кроме того, это тоже обходит проблему:

Кроме того, что мне любопытно и представляет собой немного лучший дизайн (поскольку он не требует, чтобы один класс возился с членами другого)

Хорошая новость в том, что ЕСТЬ решение, которое не требует изменения правил сборки проекта, оставляет включенной оптимизацию и фактически идентично.

Visual Studio предлагает различные средства для измерения производительности и профилирования. Некоторые средства, такие как "Загрузка ЦП" и "Использование памяти", можно запустить с отладчиком или без него, а также с конфигурациями сборок отладки или выпуска. Средства, отображаемые в окне Средства диагностики, запускаются только во время сеанса отладки. Средства, отображаемые в области Профилировщик производительности запускаются без отладчика, а анализ результатов следует выполнять после того, как вы решили приостановить приложение и выполнить сбор данных (для заключительного анализа).

Вы можете использовать средства оценки производительности, не относящиеся к отладчику, в Windows 7 и более поздних версий. Для выполнения интегрированных в отладчик средств профилирования требуется Windows 8 или более поздней версии.

Не связанный с отладчиком Профилировщик производительности и встроенные в отладчик Средства диагностики предоставляют разные сведения и интерфейсы. Интегрированные в отладчик средства показывают значения переменных и позволяют использовать точки останова. Не связанные с отладчиком средства дают результаты, которые ближе к взаимодействию с конечным пользователем.

Чтобы определить, какие средства и результаты для этого нужно использовать, примите во внимание следующее:

Сбор данных профилирования во время отладки

Если запустить отладку в Visual Studio, выбрав элементы Отладка > Начать отладку или нажав клавишу F5, по умолчанию отображается окно Средства диагностики. Чтобы открыть его вручную, выберите Отладка > Окна > Отображение средств диагностики. Окно Средства диагностики содержит сведения о событиях, памяти процессов и загрузке ЦП.

Моментальный снимок в окне Средства диагностики

Используйте значок Параметры на панели инструментов, чтобы указать, требуется ли просматривать показатели Использование памяти, Анализ пользовательского интерфейса и Загрузка ЦП.

В раскрывающемся списке Параметры выберите пункт Параметры, чтобы открыть страницы свойств Средств диагностики с дополнительными параметрами.

В Visual Studio Enterprise можно включить или отключить IntelliTrace, последовательно выбрав пункты Сервис > Параметры > IntelliTrace.

Сеанс диагностики закончится при остановке отладки.

Дополнительные сведения можно найти в разделе

Вкладка "События"

Во время сеанса отладки на вкладке "События" окна "Средства диагностики" отображаются возникающие диагностические события. Префиксы категории Точка останова, Файл и другие позволяют быстро просмотреть список в поисках нужной категории или пропустить категории, которые вас не интересуют.

Для фильтрации событий в представлении можно использовать раскрывающийся список Фильтр, выбирая определенные категории событий или отменяя их выбор.

Снимок экрана фильтра диагностических событий

Чтобы найти определенную строку в списке событий, используйте поле поиска. Здесь показаны результаты поиска строки name, которой соответствуют четыре события:

Снимок экрана поиска диагностических событий

Сбор данных профилирования без отладки

Для сбора данных о производительности без отладки можно запустить средства Профилировщика производительности.

В открытом проекте в Visual Studio установите для решения конфигурацию Выпуск и выберите цель развертывания Локальный отладчик Windows (или Локальный компьютер).

Выберите Отладка > Профилировщик производительности или нажмите сочетание клавиш ALT+F2.

На странице запуска средств диагностики выберите режим запуска одного или нескольких средств. Отображаются только те средства, которые применимы к типу проекта, операционной системе и языку программирования. Выберите Показать все инструменты, чтобы просмотреть средства, отключенные для этого диагностического сеанса.

Снимок экрана средств диагностики

Для запуска диагностического сеанса нажмите кнопку Запуск.

Во время выполнения сеанса некоторые средства отображают на странице средств диагностики графы данных в режиме реального времени, а также элементы управления для приостановки и возобновления сбора данных.

Снимок экрана сбора данных в Профилировщике производительности

Для завершения диагностического сеанса выберите команду Остановить сбор.

Проанализированные данные отображаются на странице Отчет.

Вы также можете сохранить отчеты и открыть их из списка Последние сеансы на странице запуска Средств диагностики.

С помощью подсказок PerfTips , отображаемых в отладчике Visual Studio, а также встроенных в отладчик средств диагностики вы можете отслеживать и анализировать производительность вашего приложения во время отладки.

Несмотря на то, что встроенные в отладчик средства диагностики — это отличный способ оценить производительность приложения во время разработки, работа отладчика может существенно сказаться на показателях программы. Чтобы получить более точные данные о производительности, попробуйте дополнительно проанализировать программу с помощью средств Профилировщика производительности. См. статью Running Profiling Tools with or without the Debugger (Выполнение средств профилирования с отладчиком или без него).

PerfTips

При остановке выполнения отладчика на точке останова или при завершения шага в окне редактора отображается время, прошедшее от предыдущей точки останова до прерывания. Дополнительные сведения см. в разделе PerfTips. Информация о производительности прямо при отладке с помощью Visual Studio.

PerfTip

Окно "Средства диагностики"

Точки останова и связанные с ними данные о времени отображаются в окне Средства диагностики.

На рисунке ниже показано окно Средства диагностики.

Снимок экрана: окно "Средства диагностики" в отладчике Visual Studio, на котором показаны временная шкала для пункта "События" и графики для пунктов "Использование памяти" и "Загрузка ЦП".

На временной шкале События прерывания отмечаются точки останова, достигнутые за сеанс отладки. Щелкните событие, чтобы выбрать его в списке сведений отладчика .

Граф Использование ЦП отображает изменения нагрузки на все ядра ЦП во время сеанса отладки.

В списке События , расположенном в области сведений отладчика , отображаются все события прерывания.

В столбце Длительность для каждого события прерывания отображается время, прошедшее до него от последней точки останова.

Включение и отключение PerfTips

Чтобы включить или отключить подсказки PerfTips, сделайте следующее:

В меню Отладка выберите пункт Параметры.

Установите или снимите флажок Показывать подсказку с затраченным временем при отладке.

Включение и отключение окна "Средства диагностики"

Чтобы включить или отключить окно "Средства диагностики", сделайте следующее:

В меню Отладка выберите пункт Параметры.

Установите или снимите флажок Включить средства диагностики при отладке.

VS 2017 - средства сборки Visual Studio 2010 (v100)
Пытаюсь откомпилировать проект c++ который писался для WinXP на VS2010 v100, выдает ошибку: .

Как открыть Team Explorer в Visual Studio 2017?
Случайно закрыл Team Explorer в студии. Как теперь его открыть?что нужно сделать.

Как открыть свойства проекта в Visual Studio 2017?
в visual studio 2017 во вкладке проект нет свойств проекта, как еще можно открыть свойства проекта?

посмотри в Debug->Windows (Дебаг->Окна?) не знаю как будет на русской версии Raali, в 2015 может и есть, но в 2017 там этого окна нет.

SalavatGood, а какая версия студии - Community или Professional.
Нужное окно должно называться Профилировщик производительности ну или как то так и, возможно, оно находится во вкладке Анализ, в главном меню. Точнее не могу сказать, так как стоит 15 студия (пару месяцев назад стояла и 17 профессиональная, но я случайно удалил (как я думал лишнюю, но оказалось, что нет ) папку и она отказалась работать. Пришлось вернуться на 15 комьюнити, устанавливать заново 17 пока лень).

А оно само не выйдет, нужно открыть соответствующее окно.

Добавлено через 1 минуту
В комьюнити версии анализ производительности возможно либо совсем отсутствует, либо сильно порезан. Но это не точно. Надо читать на сайте Майкрософта.

SalavatGood, Значит профилировщик точно должен быть.

Решение

Мне кажется в express как раз его и нет, нужен хотя бы Community

А, блин я express с Enterprise перепутал.

SalavatGood, В общем, почитав в интернете про эту версию (на сайте майкрософта про express я мало что нашёл), похоже что Raali, прав - скорее всего в этой версии никакого профилировщика нет.

Понятно, ну сам по себе visual studio слишком новороченный для тех кто недавно начал языки Си учить. Раньше в Sublime Text писал на Питоне, сейчас C++ синтаксис осваиваю, хотелось бы поподробнее узнать, кто на каком редакторе C++ начал осваивать, я слышал многие с Dev C++ начинали.

я с Dev C++, но где-то через пол года (может и раньше, не помню уже) перешёл на студию - 13 версия коммьюнити. Главным стимулом послужило - отсутствие нормальной отладки в деве, ну и студия - это профессиональный инструмент разработки. В студии реально проще работать, по сравнению с Dev C++.

visual studio слишком новороченный для тех кто недавно начал языки Си

Поначалу так же думал, но очень быстро поменял своё мнение на противоположное. Редактор, как редактор. Правда, я не могу сказать про себя, что знаю его прям "вдоль и поперёк".

А вообще - тут всё от многих факторов зависит, а не от одного только - нравится - не нравится. Например, для C++Qt лучше использовать ихний же QtCreator. Для решения простеньких лаб хватит и Dev C++ (правда искать ошибки, по крайней мере мне, в нем было бы трудновато)
Кто-то сидит не на винде а на каком-нибудь Линуксе-Юниксе. И у каждого из них свои предпочтения будут, в том числе и связанные с ограничениями системы.

У меня Community 2019. Другую установить не могу! Кнопка окно средства диагностики есть, н осамо окно не запускается. Ctrl + Alt + F2, если это не сработает, тогда у вас проблемы с студией (возможно не правильно установилась)
либо вы куда-то спрятали это окошко и теперь не можете найти конечно я это пробовал и окошко не потерялось. Иначе я его бы нашёл. И ещё много вариантов. Я думал у меня расширения конфликтуют. Поотключал все. не то. Так что скорей всего не так установлена. Ну и ладно. Я уже 3 раза переустанавливал. Ничего не вышло. Обойдёмся! Я уже привык что не работает.

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Не могу открыть мастер переменных в Visual Studio при работе с MFC
Здравствуйте. Только начал изучать mfc по видео урокам. Не могу открыть мастер переменных ( при.


В коде возникли ошибки при переходе с Visual studio 2013 на Visual studio 2017
Добрый день, решил попробовать поменять свою 2013 студию на 2017 и заметил такую проблему, при.

Ошибка в Visual Studio professional 2017. Невозможно найти или открыть PDB-файл
Скачал Visual Studio professional 2017 и создал новый пустой проект. При запуске вышла ошибка.

Как пользоваться отладчиком (в Visual Studio)
Прежде, чем создавать темы типа "Программа вылетает после запуска", "Выводится непонятно что" и.

Установка C++ Redistributable Visual Studio 2017 и Visual C++ для Visual Studio 2015
Доброго дня. Пытаюсь изучить PHP. Решил установить сервер локальный. В инструкции сказано: "Ещё.

вещи, которые я пробовал без успеха:

полностью удалить и переустановить VS.

выполнение ремонта на моей установке VS

в параметрах отладки отключено обеспечение "использовать режим совместимости ".

Это все еще происходит, даже если я создаю новый проект WPF, поэтому я не считаю, что у него есть какая-либо конкретная причина проекта.

удаление моего решения .suo (варианты решения) файл Исправлена проблема. Мое первоначальное утверждение об этой ошибке, влияющей даже на новые проекты, кажется неправильным. Хотя я сделал полную переустановку VS после выполнения этого теста, поэтому возможно, что это повлияло на результат.

полное раскрытие: я работаю в Microsoft, в частности в команде диагностических инструментов.

есть части диагностических инструментов, которые не будут работать в Windows 7, в частности, принимая трассировку профилирования процессора во время отладки. Это ограничение операционной системы и ИТР. Если вас интересуют только графики и события отладки, они должны работать. Вы можете включить ведение журнала для наших инструментов, который может дать вам некоторое представление о том, почему они не работа:

для LogLevel вы можете использовать одну из следующих строк "Все", "информация", "отладка", "предупреждение", "ошибка" (в вашем случае я бы использовал все, чтобы лучше видеть, что происходит). Как для LogDirectory это каталог "C:\Logs". Когда вы закончите повторять сценарий, закройте VS, чтобы очистить журналы и не забудьте удалить эти ключи, поскольку ведение журнала диагностических инструментов довольно интенсивно.

вы должны иметь возможность искать "ошибка - - -" в журналах чтобы получить представление о том, что происходит. Мы видели проблемы с некоторыми расширениями VS и пользовательскими проектами.

У меня были проблемы с этим некоторое время назад.

1) Проверить Инструменты>Параметры>отладка>общие>включить диагностические инструменты во время отладки

2) проверить Инструменты>Параметры>Intellitrace > включить intellitrace

никто из них не работал для меня. Мне нужно было закрыть все визуальные студии и снова открыть их, и диагностический инструмент работал.

(Я удалил .suo файл, убедился, что все правильные параметры были включены, но поскольку у меня был еще один сеанс Visual Studios, ни один из них не работал, пока я не закрыл все)

У меня уже был другой экземпляр visual studio, работающий с диагностическим. Это было проблемой для меня.

У меня была такая же проблема, хотя удаление.файл suo не помог, я также отремонтировал Visual Studio 2015 Professional, а затем он работал. Так для будущих читателей, если удалить .suo не помогает, попробуйте также восстановить Visual Studio и наоборот.

У меня была аналогичная проблема с Visual Studio 2015 Pro Update 3, работающим на Windows 10 Home. Отображение времени выполнения памяти и использования ЦП перестало работать. Удаление .СУО файл исправил проблему,как указано в ответе proc-self-map. Этот.СУО файл был похоронен в.vs скрытый каталог, поэтому я удалил все .vs подкаталог. Теперь отображение времени выполнения памяти и использования процессора снова работает как шарм. Переустановка не требуется.

Читайте также: