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

Тема в разделе "MS Visual C++", создана пользователем doctor, 25 янв 2004.

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

    doctor Гость

    Файл 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'е), тогда будет показываться время компиляции.

    ----

    З.Ы. Папа программирования, галочку "Включить смайлики" снимать надо, а то некрасиво выглядит.
    ????
     
Загрузка...
Статус темы:
Закрыта.

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