2015-02-25 2 views
34

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

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

+1

Можете ли вы также попробовать обновить до последней версии CT П? Вероятно, это может быть известной проблемой, которая уже была исправлена.Если он по-прежнему воспроизводится, пожалуйста, дайте нам репрограммирование и шаги (либо подключитесь, либо инструмент обратной связи, интегрированный в VS сейчас). Благодаря! – Maria

ответ

76

Возможно, это ошибка. Пожалуйста,file a Connect bug с изображением, если у вас есть.

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

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

Options window

+4

К сожалению, это не сработало для моей проблемы, которая похожа, но не такая же, как у OP. В моем случае, зависание над моими переменными работает только для некоторых, а не для других в VS 2015. Я опубликую решение/работу, когда найду его. – user2325333

+0

Ну, это было быстро, я нашел статью о msdn здесь: http://bit.ly/1Ir4yFv, которая предложила сбросить настройки в VS. – user2325333

+2

Я думаю, что «Использовать режим управляемой совместимости» достаточно. Нужно сделать более подробное тестирование, но после того, как эта опция была проверена, я смог увидеть значение отладки локальной переменной – Sergey

16

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

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

+6

Спасибо. Настройка «Отладка» в качестве конфигурации решения помогла. – vellotis

+1

Работал для меня тоже VS2015, переключитесь с Release на Debug. –

+0

Не знаю, я пропустил это, спасибо! – mdegges

7

Как описано here, вам необходимо включить проверку «Запретить оптимизацию JIT при загрузке модуля (только управляемый)» в Debug -> Options -> Debugging -> General.

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

+0

Спасибо вам большое :). Меня устраивает . –

7

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

Включение следующие настройки от Эндрю Арнотт решить мою проблему: Сервис -> Параметры -> Отладка -> Общие: «Использование устаревших C# и выражение оценщики VB»

1

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

Tools \ Options ... \ Debugging \ Общие снимите флажок 'Использовать управляемый режим совместимости' (! ДА Снимите отметку)

В нативный код, вместо этого добавить точки останова, просто добавьте это:

assert (false);

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

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

Kochise

-2

Я работаю на конфигурации с 'Debug', которые не имеют набор оптимизации, так что я повторяю:

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

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

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

Попробуйте.

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

BTW, это делает еще один идеальный 'разрыв':

INT * р = NULL, я = 1/* р;

Kochise

0

Я обнаружил, что просто изменив выпадающий с «Release и Debug» обратно отлаживать позволило мне увидеть расширение переменных при отладке снова мой код.

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

Моя работа PC был в состоянии показать это расширение в 2017 году после того, как я сделал «Строят >> Чистый вариант Solution и будет работать даже когда выпадающий установлен в положение„Release“.

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

0

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

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

0

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

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

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

Проект -> Свойства -> C/C++ -> Оптимизация -> Disabled