VS2010 RC — только 100 элементов std::map в отладчике

У меня возникла небольшая проблема во время отладки моего приложения в VS 2010 RC, когда я хочу увидеть все элементы контейнера std::map.

Когда отладчик достигает точки останова, и я хочу проверить значения карты в инспекторе элементов (в окнах «Локальные» и во всплывающих окнах после наведения мыши на имя переменной), и я прокручиваю список элементы он останавливается на элементе 100, и я не могу использовать следующие элементы. Карта содержит более 200 элементов (параметр счетчика карты показывает это правильно), но я не могу просмотреть их все в инспекторе элементов.

Проблема возникает даже в самом простом std::map<int, int>, заполненном 200 значениями int.

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

Спасибо заранее за вашу помощь.


person MKP    schedule 24.02.2010    source источник
comment
Я предполагаю, что это просто ограничение отладчика. Скорее всего, они решили установить некоторые верхние пределы, чтобы для действительно больших структур данных они не просто зависали, как кажется, навсегда.   -  person Evan Teran    schedule 24.02.2010
comment
В этом конкретном случае, не могли бы вы просто отлаживать по старинке и распечатывать содержимое карты в стандартный вывод или в файл? Это всего несколько строк кода, и, вероятно, это будет разовая работа.   -  person Peter Alexander    schedule 24.02.2010
comment
Сообщите о проблеме в Microsoft (connect.microsoft.com), если считаете, что ее необходимо решить.   -  person Max    schedule 24.02.2010
comment
@Poita_: Я так и сделал, но на данный момент это решено, и я просто хотел исправить это на будущее @Evan Teran, @Max: Когда я спросил об этом своих друзей, на VS 2008 все работало правильно, так что, возможно, это 2010 год. проблема (я сверил свои настройки с их (теми, что доступны), но они одинаковые), но я подумал, что такая проблема должна быть замечена в бета-версии и отсутствует в RC-версии, но, возможно, я я ошибаюсь и должен делать так, как сказал Макс...   -  person MKP    schedule 24.02.2010


Ответы (2)


Отображение такой информации управляется файлом autoexp.dat (обычно находится в "Program Files*"\"Microsoft Visual Studio*"\Common7\Packages\Debugger). Похоже, Microsoft добавила жестко закодированное ограничение в 100 элементов к оператору #tree, чтобы избежать зависания Visual Studio в случае циклов в дереве.

person plodoc    schedule 25.02.2010
comment
В VS 2008 также существует ограничение: строка значения ограничена примерно 400 символами, заканчиваясь ..., чтобы указать, что значений больше. - person plodoc; 25.02.2010

В VS 2010 SP1 это ограничение было увеличено до значения по умолчанию, равного 2000 записей. Это также можно изменить, установив раздел реестра (здесь применяются все стандартные предупреждения об изменении реестра):

  • для x86: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\10.0\NativeDE\VisualizerMaxChildren
  • для x64: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\NativeDE\VisualizerMaxChildren

Скотт Бреннеке, инженер по расширению поддержки Microsoft VC++

person Scot Brennecke    schedule 14.04.2011