Сообщений 0    Оценка 0 [+1/-0]         Оценить  
Система Orphus

Что нового? Отладчик Visual Studio 7.0

Автор: Александр Шаргин
Источник: RSDN Magazine #0
Опубликовано: 27.01.2002
Исправлено: 13.03.2005
Версия текста: 1.0
Всеобщая интеграция
Проверки времени выполнения
Новые отладочные окна
Улучшенная отладка DLL
Отладочные дампы
Отсоединение от отлаживаемого процесса

На момент написания этой статьи финальная версия Visual Studio 7.0 ещё не была мне доступна. Поэтому описывать новый отладчик в деталях я не буду. Но рассказать о его новых возможностях, безусловно, стоит. Этот рассказ основывается на возможностях Visual Studio 7.0 Beta 2.

Всеобщая интеграция

В среде Visual Studio 7.0 отладчики всех языков были интегрированы в один – Visual Studio Debugger. Этот отладчик поддерживает отладку программ на всех основных языках, отладку скриптов и кроссязыковую отладку. Кроме этого, отладчик может отлаживать несколько программ одновременно и подключаться к программам на удалённых компьютерах.

Проверки времени выполнения

В VC7 появилось множество проверок времени выполнения, в том числе:

В случае совершения программой потенциально опасного действия её выполнение немедленно прерывается, а отладчик выдаёт предупреждающее сообщение. Если, к примеру, выполнить под отладчиком код:

int array[10];
array[-1] = 0;

то на выходе из функции мы получим сообщение об ошибке "Stack around the variable 'array' was corrupted" (рис. 16).


Рисунок 16. Сообщение о выходе за границы массива

Используя директиву #pragma runtime_checks, можно гибко включать и выключать проверки времени выполнения для отдельных функций в отлаживаемой программе.

Новые отладочные окна

Набор отладочных окон остался приблизительно тем же, что и в Visual C++ 6.0, но все они были расширены и улучшены. Окна Variables и Watch теперь показывают не только значения, но и типы выражений. Окно Memory "обзавелось" четырьмя закладками. В окне Registers стало возможно просматривать новые наборы регистров – SSE2 и 3DNow! Модальные диалоги Modules и Threads стали нормальными окнами, что гораздо удобнее. Для точек останова также появились новые настройки. Например, теперь для точки останова можно указывать не только строку, но и столбец, к которому она привязывается. Это позволяет точно позиционировать точку останова в строке с несколькими инструкциями.

Интеграция между отладочными окнами также улучшилась. Например, теперь можно перетаскивать переменные в окно Watch прямо из ClassView.

Улучшенная отладка DLL

Отладчик Visual Studio 7.0 сам загружает все необходимые отладочные символы, в том числе символы для динамически подгружаемых DLL. Поэтому необходимость в окне Additional DLLs отпала, и оно было убрано из среды.

Отладочные дампы

В отладочных дампах хранится полная информация о состоянии программы в определённый момент времени (содержимое памяти, стека, регистров, стека вызовов и т. д.). Отладчик Visual Studio 7.0 позволяет сохранять такие дампы в процессе отладки, а также загружать дампы – как свои собственные, так и дампы других программ (Doctor Watson, AutoDump и др.). Благодаря этому можно, к примеру, тестировать программу на пользовательской машине (без отладчика, исходных текстов и PDB-файлов), а затем загрузить дамп, сгенерированный в момент ошибки, в Visual Studio и начать отладку прямо с того места, где ошибка возникла. Предыстория ошибки (стек вызовов) также будет вам доступна, благодаря чему ошибку будет найти и исправить гораздо проще.

Отсоединение от отлаживаемого процесса

В Visual C++ 6.0 завершение сеанса отладки приводит к завершению отлаживаемого процесса. Это не всегда удобно. Например, при отладке ISAPI-расширений нет никакого смысла каждый раз останавливать и снова запускать IIS. Отладчик Visual Studio 7.0 позволяет отсоединиться от отлаживаемого процесса, не завершая его. Для этого при подключении к процессу следует задать режим When debugging is stopped: Detach from this process.

Чтобы этот режим был доступен, необходимо запустить специальный сервис dbgproxy. Для этого можно воспользоваться командой net start dbgproxy.


Эта статья опубликована в журнале RSDN Magazine #0. Информацию о журнале можно найти здесь
    Сообщений 0    Оценка 0 [+1/-0]         Оценить