Когда вам приходится просматривать элементы списка (массива) в отладчике Visual Studio, например, в окне QuickWatch, вы часто сталкиваетесь с неудобством просмотра сложного (или длинного) списка данных.
Трудно увидеть, например, значения полей всех элементов списка.
В этом посте показаны несколько «встроенных» способов решения этой проблемы и возможность расширения.
БагЭйд .
мало букв, но достаточно картинок.
Давайте посмотрим на простой пример.
Теперь, просматривая данные в отладчике, мы видим примерно следующее:public class DataItem { public string Name { get; private set; } public string Description { get; private set; } public DataItem(string name, string description) { Name = name; Description = description; } } public class DataItems { public List<DataItem> Items { get; private set; } public DataItems() { Items = new List<DataItem>(); } }
Стандартный QuickWatch не позволяет нам видеть определенное поле (или отформатированные поля) для всех элементов списка одновременно .
Для решения этой проблемы многие разработчики знают простой способ реализации метода.
Нанизывать() : public class DataItem
{
public string Name { get; private set; }
public string Description { get; private set; }
public DataItem(string name, string description)
{
Name = name;
Description = description;
}
public override string ToString()
{
return String.Format("{0}: {1}", Name, Description);
}
}
или более «на основе атрибутов»: [DebuggerDisplay("Name = {Name}, Desciption = {Description}")]
public class DataItem
{
public string Name { get; private set; }
public string Description { get; private set; }
public DataItem(string name, string description)
{
Name = name;
Description = description;
}
}
Следует отметить, что для более сложных задач существует атрибут Тип отладчикаПрокси , но это не предел :).
Эти два метода хороши, но у них есть тот недостаток, что все это нужно писать в программном коде и компилировать.
Но часто вам нужно просмотреть данные списка в разных форматах.
Остановка для этого отладчика, изменение кода или атрибута, перекомпиляция и запуск заново — очень трудоемкий метод. Как оказалось, есть расширение БагЭйд для Visual Studio (по крайней мере, начиная с VS2010), которая решает эту проблему, а заодно и некоторые другие.
После установки этого расширения появляется меню BugAid с парой опций и собственным окном «BugAid — QuickWatch».
Теперь вы можете использовать звездочку, чтобы выбрать поля, которые вы хотите просмотреть для всех элементов списка.
и вуаля
Но это еще не все.
На самом деле, это все только начало.
Но я хочу создать какой-то формат данных и показать что-то вроде этого.
В этом случае вы можете использовать " Добавить пользовательское выражение ", добавьте выражение для элемента списка: что-то вроде " [obj].
Имя.
Длина "
и «наслаждаться» пользовательским форматом данных без компиляции и «вклада»:
Как часто вы хотели бы, чтобы Google выполнял поиск некоторых данных в сложном списке?
так что давай выгоним его в поле Поиск что мы хотим найти и получаем:
но сравните пару элементов списка друг с другом.
Еще можно сделать так: выбрать первый элемент через меню " Выберите левую сторону для сравнения ", а потом второй.
" По сравнению с.
" и посмотрите на разницу:
Ну тогда было бы неплохо отфильтровать данные:
Кроме того, вы можете сохранять элементы и сравнивать их с течением времени.
Расширение BugAid имеет еще несколько интересных функций (например, визуализировать сложные выражения в операторе if ).
поэтому я считаю, что это расширение заслуживает внимания разработчиков.
Несколько слов о недостатках, которые я обнаружил.
- Это еще не релиз, а бета-версия, поэтому не всегда работает стабильно.
Чем сложнее структуры данных, тем больше вероятность возникновения проблем.
- Некоторые стандартные функции (например, атрибут Тип отладчикаПрокси ) не поддерживается расширением.
- Расширение не бесплатное, но есть двухмесячная бесплатная пробная версия.
Теги: #.
NET #Visual Studio #visual studio 2012 #отладчик #визуализация #BugAid #BugAid #C++ #.
NET #Visual Studio #C++
-
Находите Файлы На Жестком Диске Быстрее
19 Oct, 24 -
«Сделай Меня Красивой!» Выпуск №37
19 Oct, 24 -
«Специальные» Винты От Sony
19 Oct, 24 -
Поведенческие Технологии В Сети Рлэ.
19 Oct, 24 -
Техники Персонализации Контента
19 Oct, 24