Как зaставить отладчик VS быть более умным...

Тема в разделе "MS Visual C++", создана пользователем Guest, 16 ноя 2003.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Файл autoexp.dat находится в каталоге %Visual Studio Folder%\Common\MSDev98\Bin
    (%Visual Studio Folder% - каталог, в которой установлен пакет Visual Studio).
    Oтладчик "умеет" распознавать стандартные структуры данных (CString, RECT и т. п.) и показывать их содержимое в окнах Variables и Watch, а также во всплывающих подсказках. Оказывается, можно не только изменить представление этих структур отладчиком, но и определить представление для собственных структур. Именно для этого и используется секция [AutoExpand]. Каждая строка в ней описывает одну структуру (или класс). Описание имеет следующий формат:
    Код (Text):
       имя_типа = текст<имя_поля[,ключ_форматирования]>...
    С помощью файла autoexp.dat можно выполнять некоторые тонкие настройки отладчика. Изменения вступают в силу после перезапуска среды Visual C++.
    Хотелось бы услышать опыт других в этом вопросе и других тонкостях настройки
    Visual Studio
     
  2. Гость

    Очень полезно во время отладки пользоваться псевдорегистрами, к ним относятся:
    - Регистры процессора (@eax, @ebx и т.д.)
    - Код последней ошибки (@err), который возвращается GetLastError()
    - Thread information block для текущего потока (@tiB)
    В watch window добавляем регистр @err и всегда имеем возможность смотреть код ошибки. Его можно "расшифровать" при помощи ErrorLookup, если ErrorLookup запускать лень, то в watch window пишем @err,hr и всегда видим текстовое описание ошибки. Кстати, если в программе используются user-defined коды ошибок, то их текстовое описание для отладчика можно добавлять в autoexp.dat в секции [hresult].
    TIB текущего потока можно использовать для условных точек останова: условие вида @TIB==0x7f000000 заставит срабатывать breakpoint только в контексте определенного потока (разумеется, правильное значение TIB для потока надо будет посмотреть заранее). По смещению @tib+24 лежит thread ID, можно использовать его. Но в 98-х @tib не работает, там нужно регистр @fs использовать.
    Из регистров процессора я обычно использую только @eax, чтобы всегда видеть результат, возвращенный функцией.

    В том же файле autoexp.dat в секции [ExecutionControl] можно запрещать вхождение отладчика внутрь каких-либо функций (при нажатии Step Into). Например, запретить входить в конструкторы и операторы присваивания класса CString и во все функции класса CMyClass:
    [ExecutionControl]
    CString::CString=NoStepInto
    CString::eek:perator==NoStepInto
    CMyClass::*=NoStepInto

    Ну и много прикольных штучек есть. Например, можно добавить ключ '/Y3' в командной строке msdev (в shortcut'е), тогда будет показываться время компиляции.

    У Рихтера давно вычитал и применяю с удовольствием...
    Очень хороший по "этим делам"
    обзор Александрa Шаргинa на RSDN.
    http://www.rsdn.ru/article/vcpp/vcdebug-1.xml
     
  3. ????

    ???? Гость

    Облом :unsure: Зашел что-бы дать ссылку, так меня опередили :D
     
  4. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    ????
    Форум небольшой, а конкуренция растет :unsure: Бывает.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей