Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > autoexp.dat |
Автор: itan 3.7.2006, 14:20 | ||
Работаю с Visual C++ 2003 Недавно узнал, что в его поставку входит файл autoexp.dat для тонкой настройки отладчика (находится в каталоге %Visual Studio Folder%\Common\MSDev98\Bin). Редактируя этот файл можно добится отображения в окне Debug нестандартных (собственных) структур и классов. Так вот, вопрос к тем кто с этим уже сталкивался и использует - почему следующий код у меня не работает: предположим есть класс:
Редактируем секцию [AutoExpand] файла autoexp.dat следующим образом: Base=<m_caption, s> Все отлично работает и при отладке мы видим, что вместо знаков вопроса отображается значеие m_caption. Но, если мне надо узнать какое значение в данный момент возвращает функция caption(), то Base=<caption(), s> почему - то уже не прокатывает и в отладке я вижу ???? В чем тут дело??? |
Автор: Earnest 3.7.2006, 14:28 |
AutoExp.dat может отображать только фактические поля. Вычислять ничего не умеет (и вызывать функции - тоже). Вроде можно нарисовать и подключить свой плаг-ин, который будет делать то, что тебе нужно. В MSDN это только упоминаеется, без подробностей, но есть пример. Если очень хочется, можно разобраться. |
Автор: itan 3.7.2006, 14:33 |
Понятно, жаль... А что нибудь для контроля вычисляемых полей посоветуете? |
Автор: Earnest 3.7.2006, 15:23 |
Ну, я просто пишу в Watch выражения... Например, если надо посмотреть размер вектора A: A._Mylast-A._Myfirst; первые 10 элементов вектора: A._Myfirst,10. (Это из реализации stl, которая идет с VC2003). Если никак не обойтись без просмотра глубоко запрятанных полей, к которым никак не добраться (что бывает, слава богу, редко) - использую TRACE и (совсем в крайнем случае) промежуточные переменные. Иногда бывает полезно просматривать память (Memory) или нагло преобразовывать тип в Watch (если точно знаешь, какие там данные). |