Всем доброго дня!
Столкнулся с проблемой при дебаге в VS 2013 Community. Дело в том, что раньше я писал в VS 2008, очень привык к тому отладчику, а именно к разделу "watch". Он очень удобный. При наведении мышью на std::vector я видел все содержимое вектора. Тоже самое и в "watch".
Особенно удобно это в случае двумерного вектора, когда в любой момент дебага можно посмотреть на двумерный вектор как на матрицу (то есть видны все элементы). Вот скрины:
Недавно поставил 2013 Visual Studio. И все бы ничего, удобно, красиво, но нет теперь такого просмотра вектора. Вместо отображения всех элементов вылазиют всякие size, capacity, адреса в 0x системе.
Конечно, можно увидеть каждый элемент, но для этого надо раскрыть каждую строчку (при том по очереди), да и открываются они в столбик. То есть пока все откроешь, уже пропадает представление о том, где что должно стоять.
Собственно, сабж.
Есть ощущение, что это можно настроить, так как в универе у меня на VS 2010 все нормально, а у друга на том же 10 вижаке такая же проблема. Если это возможно настроить, подскажите как, у меня не получилось найти.
Если кто-то пишет на 2015(бесплатной), посмотрите, как у вас с отображением двумерных векторов и скажите, пожалуйста.
PS Кстати, тоже самое касается queue, string, stack, map и т. д.
Кто чем может помогите, был бы очень рад.
Автокомментарий: текст был обновлен пользователем pyloolex (предыдущая версия, новая версия, сравнить).
Наверно, вывод этих структур зависит от используемой версии STL. Хотя вы, наверно, исп-те "родной" и он должен бы выводиться красиво.
Сомневаюсь, что есть настройка вывода таких структур.
Вот я сильно не рылся в исходном коде STL от Dinkumware, использующемся вместе с VC++, но ведь стандарт C++ же не предусматривает наличие функции-члена наподобие toString() в Java?
Попробовал в VS 2015 Community на дефолтных настройках — все так же, как и на Ваших скриншотах.
На каком именно? Плохо отображается или хорошо в виде матрицы?
Все плохо.
В VS2015 стало очень просто добавлять свои визуализаторы — достаточно просто добавить .natvis файл в проект. Вот пример визуализатора который покажет элементы массива, соответственно для двухмерного массива будет видна матрица:
Самого интересует, решения не знаю, но есть пара мыслей.
Вроде как утверждается, что формат отображения должен задаваться файлом
<ProgramFiles>\Microsoft Visual Studio <vs_version>\Common7\Packages\Debugger\autoexp.dat
Но только вот у меня в VS2012 содержимое этого файла вроде бы адекватное, а показывает так же плохо, как и у топикстартера.Если есть доступ к экземплярам VS, в которых имеется разное отображение -- может, имеет смысл сравнить эти самые файлы
autoexp.dat
этих экземпляров VS?И, кстати, у универовских лаборантов пытались спрашивать? Вы ж говорите, что там всё настроено правильно -- может имеет смысл там и спросить? (А потом рассказать тут!)
Удалось найти кривое частичное решение. Возможно, кто-то сумеет сделать его более адекватным и удобным.
Для VS2012, берём файл
C:\Program Files\Microsoft Visual Studio 11.0\Common7\Packages\Debugger\Visualizers\stl.natvis
. Его строки 896--897 имеют вид:Меняем вторую из этих строк на
В результате получаем бредовое показывание ровно по восемь элементов (независимо от реального числа), но всё же показывание в одной строке и показывание в виде матрицы.
Опять-таки: если есть экземпляр VS, где STL-контейнеры показываются удобно — пожалуйста, возьмите файлы из
<ProgramFiles>\Microsoft Visual Studio <version>\Common7\Packages\Debugger\Visualizers
(например, сразу все) и разместите архивчик где-нибудь в общедоступном месте.