Написал свой класс строки - String. Но увидеть значение переменной типа String в Visual Studio или Qt Creator не могу (занимаюсь переводом в std::string).
Как заставить IDE показывать значение таких переменных?
Ответ
Смотрите.
Для свежих версий Visual Studio (начиная с 2012) лучше всего пользоваться форматом natvis. При этом вы можете, например, включить визуализацию ваших типов прямо в проект, и Visual Studio даже будет подхватывать изменения отображения прямо на лету, во время отладки.
Давайте разберём простой пример. Создадим простейший кастомный класс, представляющий строку.
#include "stdafx.h"
#include
namespace utils
{
class MyString
{
size_t length;
char* payload;
public:
MyString() : length(0), payload(nullptr) { }
MyString(char* data) : length(strlen(data)), payload(new char[length + 1])
{ strcpy_s(payload, length + 1, data); }
~MyString() { delete[] payload; }
};
}
И простейший тест:
int main()
{
utils::MyString s1;
utils::MyString s2("I am string");
}
Теперь добавим нашу кастомную визуализацию. Для этого идём в окно проекта
и добавляем новый natvis-файл. Назовём его MyString.natvis.
Получим следующий файл:
Добавим в него нашу визуализацию. Положим тег Type с именем нашего типа (включая namespace). Подтег DisplayString задаёт то, как тип будет отображаться в одну строку. Можно добавить условие (DisplayString Condition=), в зависимости от которого значение будет отображаться по-другому. Подтег Expand управляет тем, как будут отображаться данные в «распахнутом» виде. (Поскольку это XML, не забудьте, что < и > для шаблонных типов придётся вводить как < и >, наподобие Name="std::vector<*>". Звёздочка используется для обозначения произвольного аргумента шаблона.)
Получаем вот такую картинку в окошке Watch:
Дополнительное чтение по теме:
Подробная информация о синтаксисе natvis и его фичах находится здесь
Обзор новых возможностей natvis в Visual Studio 2015 здесь
Комментариев нет:
Отправить комментарий