Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > autoexp.dat


Автор: itan 3.7.2006, 14:20
Работаю с Visual C++ 2003
Недавно узнал, что в его поставку входит файл autoexp.dat для тонкой настройки отладчика (находится в каталоге %Visual Studio Folder%\Common\MSDev98\Bin). Редактируя этот файл можно добится отображения в окне Debug нестандартных (собственных) структур и классов.

Так вот, вопрос к тем кто с этим уже сталкивался и использует - почему следующий код у меня не работает:
предположим есть класс:
Код

class Base
{
...
  public:
   const char* m_caption;
   const char* caption() { ... };
...
}


Редактируем секцию [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 (если точно знаешь, какие там данные). 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)