- •Введение в отладчик.
- •Подключение отладчика
- •Запуск отладчика
- •Разница между Step Over и Step Into
- •Run to Cursor
- •Значки инструментальной панели отладчика
- •Restart
- •Stop Debugging
- •Break Execution
- •Аpply Code Changes, Edit and Continue
- •Show Next Statement
- •Complete Word
- •Go To Definition/Reference
- •Insert/Remove Breakpoint
- •Окна отладчика
- •Окно Trace
- •Трассировка кода объекта
- •Трассировка процедурно-ориентированного кода
- •Окно Watch
- •Меню View I Debug Windows
- •Just-in-Time debugging
- •Страница Debug в окне Options
- •Раскладка клавиатуры
- •Короткие клавиши отладчика
Окно Watch
Окно наблюдений показывает выражения и их текущие значения; оно позволяет установить на выражении контрольную точку. Внутри окна вы можете вводить выражения и присоединять их к сетке активных наблюдаемых выражений, расположенной под окном Watch.
Категория Name показывает имена текущих наблюдаемых выражений; за ними идет колонка Values с их значениями. Категория Туре позволяет видеть символы, представляющие тип данных для наблюдаемых выражений. Кроме того, в окне Watch можно выделять выражения, удалять их и добавлять контрольные точки.
Меню View I Debug Windows
Активировать скрытые или свернутые окна отладчика Visual C++ можно посредством выбора меню View или View | Debug Windows с последующей категорией из тех, что описаны ниже.
Workspace
Панель, или окно Workspace показывает исходные файлы, объекты классов и ресурсы текущего проекта.
Если вы, свернули эту панель, поместив курсор на ее правую кромку и совместив последнюю с левой кромкой, то данная команда меню не сможет снова развернуть панель. Вам придется сделать это вручную, определив разделяющую линию и заново установив размер панели.
Output
Этот пункт активирует окно Debug Output. Заметьте, что если окна состыкованы, нет никакой визуальной индикации того, что они были активированы, хотя соответствующие опции меню включены или выключены.
Clear Output Window
Это окно удаляет весь текст, выведенный в окне Debug Output (которое активно только в контекстном меню окна Output — щелкните в нем правой кнопкой мыши).
Наблюдение переменных как данных различного типа.
В последующих главах вы начнете применять опции отладчика, описанные в предыдущих разделах. Однако прежде чем смотреть на данные, выводимые в разные окна отладчика, вам следует ознакомиться с форматирующими символами, показанными в табл.3. Эти символы позволяют также изменять формат представления переменных в окнах Quick Watch и Watch.
В окне Watch можно изменять интерпретацию типа данных переменной. Форматирующий символ там просто вводится сразу за именем переменной с разделительной запятой. Например, если hexNumber имеет значение 0x0041, а вы хотите видеть значение в символьной форме, в категории Name окна Watch введите hexNumber, с. Когда вы нажмете ENTER, появится символьный формат значения:
HexNumber,c = 'A'
Таблица 3. Форматирующие символы дисплея отладчика
|
Символ
|
Формат
|
Значение
|
Представление
|
|
d,l
|
Десятичное целое со знаком
|
0xF000F061
|
-268373911
|
|
U
|
Десятичное целое без знака
|
0x0066
|
102
|
|
O
|
Восьмеричное целое без знака
|
0xF064
|
0170144
|
|
х,Х
|
Шестнадцатеричное целое
|
70148 (десятичное)
|
0x000011204
|
|
l,h
|
префикс long или short для d, i, u, о, х, X
|
00406040,hx
|
0х0с20
|
|
F
|
Десятичная нотация со знаком
|
5./2.
|
2.500000
|
|
Е
|
научная нотация со знаком
|
5./2.
|
2.500000е+004
|
|
G
|
Десятичная или научная нотация со знаком, какая короче
|
5./2.
|
2.5
|
|
С
|
одиночный символ
|
0x0066
|
Т
|
|
S
|
Строка
|
Ox0012fde8
|
"The String"
|
|
Su
|
строка Unicode
|
|
"The String"
|
|
St
|
строка Unicode или ASCII в зависимости от установки Unicode Strings
|
|
|
|
Hr
|
HRESULT или код ошибки Win32
|
0x00000000L
|
S OK
|
|
We
|
флаг класса Windows
|
0x000000040
|
WC DEFAULTCHAR |
|
Wm |
номер сообщения Windows |
0x0010 |
WM CLOSE |
В табл.4 перечислены форматирующие символы, применяемые в окне Watch для форматирования содержимого памяти.
Таблица 4. Форматирующие символы для ячеек памяти
|
Символ
|
Формат Формат . :f-
|
|
Ma
|
64 символа ASCII
|
|
M
|
16 байт в шестнадцатеричном, далее 16 символов ASCII
|
|
Mb
|
16 байт в шестнадцатеричном, далее 16 символов ASCII
|
|
Mw
|
8 слов
|
|
Md
|
4 двойных слова
|
|
Mq
|
4 по четыре слова
|
|
Mu
|
2-байтовые символы (Unicode)
|
Вы также можете пользоваться форматирующими значениями для содержимого памяти в применении к любым выражениям, оцениваемым как адрес. Для представления массива символов в виде строки поставьте перед именем массива амперсант: &ArrayName. Можно за выражением поставить еще и форматирующий символ: &ArrayName,x.
Наконец, для наблюдения за значением по специфическому адресу или значением, на которое указывает регистр, пользуйтесь операциями BY, WO или DW:
• BY- возвращает содержимое указанного байта.
• DW- возвращает содержимое указанного двойного слова.
• WO- возвращает содержимое указанного слова.
Для использования этих операций нужно просто поставить соответствующие символы перед именем переменной, регистра или константы, например: gYAchar. В этом случае окно выводит байт, слово или двойное слово по адресу, содержащемуся в переменной.
Можно также использовать контекстные скобки { } для вывода содержимого любой ячейки. Для вывода строки Unicode в окнах Watch и Quick Watch пользуйтесь спецификатором формата su. Для вывода байтов данных с помощью символов Unicode применяйте спецификаторmu.
Форматирующие символы работают с массивами, структурами, указателями и объектами только в качестве нераскрытых переменных. Если вы раскрываете объект, форматирующий символ будет отнесен ко всем его элементам. Применять же форматирующие символы к отдельным элементам нельзя.
