Подтвердить что ты не робот

Visual Studio 2015 Отладка: не удается расширить локальные переменные?

Я использую предварительный просмотр Visual Studio 2015, и я пытаюсь отладить мой проект. Раньше я использовал VS 2012, и в основном зависел от возможности навести курсор мыши и расширить локальные переменные, чтобы посмотреть на их ценности. Я пытаюсь сделать это в 2015 году, но когда я наводил указатель на переменную, в появившемся окне указывается "(локальная переменная) Classname variablename" (например, "(локальная переменная) String title" ). Кнопка расширения отсутствует, и она не отображает значение переменной в поле.

Есть ли параметр, который я должен изменить, чтобы иметь возможность нависнуть над переменными и расширять их?

4b9b3361

Ответ 1

Это может быть ошибка. Пожалуйста, напишите сообщение об ошибке, если у вас есть его.

Тем временем вы можете решить эту проблему, установив параметры отладчика на использование устаревшего механизма отладки: Инструменты → Параметры → Отладка → Общие: проверьте оба варианта "Использовать устаревшие оценки выражений С# и VB", и "Использовать режим совместимой совместимости".

Этот метод работы работал у меня каждый раз. Но, пожалуйста, продолжайте записывать ошибки!

Окно параметров

Ответ 2

У меня была аналогичная проблема, когда, когда я зависал над своей локальной переменной, некоторые из них позволяли мне погружаться глубже, а некоторые ничего не показывали. После некоторого рытья я нашел статью о msdn здесь: http://bit.ly/1Ir4yFv, которая предложила сбросить настройки в VS. Как только я это сделал, я получил уведомление о том, что я работал в режиме Release и некоторые функции отладки могут быть недоступны. Как только я перешел в режим Debug, все работало, как обычно.

Надеюсь, это сработает и для вас.

Ответ 3

У меня была аналогичная проблема в VS2015, где некоторые переменные отображали значения отладки, другие ничего не отображали бы при зависании.

Включение следующей настройки от Andrew Arnott разрешило мою проблему: Инструменты → Параметры → Отладка → Общие: "Использовать устаревшие оценщики выражений С# и VB"

Ответ 4

Как описано здесь, вам нужно включить проверку "Подавлять оптимизацию JIT при загрузке модуля (только управляемый)" в Debug → Options → Debugging - → Общие.

Вам нужно также удалить флаг "Оптимизировать код" в свойствах ваших проектов.

Ответ 5

Я обнаружил способ проникнуть в собственный код и получить доступ к содержимому контейнеров STL при отладке с использованием CLI:

Инструменты\Параметры...\Отладка\Общие: снимите флажок "Использовать управляемый режим совместимости" (YES! UNCHECK IT!)

В исходном коде вместо добавления контрольных точек просто добавьте следующее:

утверждают (ложь);

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

Счастливая отладка с Visual Studio 2015:)

Kochise

Ответ 6

Я обнаружил, что простое изменение combobox с ответом "Отпуск и отладка" для отладки позволило мне увидеть расширение переменных при повторной отладке моего кода.

Это новейшее решение работает на VS 2017 на моем домашнем ПК.

Мой рабочий компьютер смог показать это расширение в 2017 году после того, как я сделал вариант "Построить → Чистое решение", и даже будет работать, если для параметра со списком установлено значение "Отпустить".

Желаем удачи всем, кто хочет эту замечательную форму для отладки VS. Я надеюсь, что, используя один из этих методов, вы сможете вернуться к "нормальному".

Ответ 7

У меня был проект, который использовал мини файлы JavaScript и хотел использовать файлы TypeScript для отладки. Я поместил в проект unminified JavaScript и связанный с ним TypeScript и изменил ссылки на обычный файл JavaScript, а не на мини-код. Мои точки разрыва попали в файл TypeScript, но я не получал информацию о наведении (на удивление это выглядело как добавление объекта/переменной, поскольку часы, похоже, работали).

Чтобы исправить, я просто исключил из файла проект из проекта и включил JavaScript. (Файл TypeScript, который я оставил без исключения).

Ответ 8

Это работало для меня в VS2017 (мой VS находится на немецком языке, поэтому имена вкладок могут быть немного разными):

Проект → Свойства → C/С++ → Генерация кода → RunTimeErrorCheck → \RTC

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

Проект → Свойства → C/С++ → Оптимизация → Отключено

Ответ 9

Я работаю над конфигурацией "Отладка", у которой нет оптимизационного набора, поэтому я повторяю:

Использование управляемой совместимости: может использовать точку останова, но не может просматривать значения

Не использовать управляемую совместимость: нельзя использовать точку останова, но можно просматривать значения

Следовательно, использование assert как точки останова, когда не используется управляемая совместимость, позволяет вам как остановить, где необходимо, так и смотреть значения.

Попробуйте.

Я предоставил вам свой трюк, потому что сейчас я столкнулся с одной и той же проблемой, за 1w до окончательной доставки. И MS претендует на планирование полного исправления для 2016 года в обновлении 2, просто невыносимо.

Кстати, это делает еще один совершенный "разрыв":

int * p = NULL, я = 1/* p;

Kochise