Отладка приложений


Окно Watch


Окно Watch занимает высокое место в списке важных свойств отладчика Visual C++. Что делает окно Watch чрезвычайно популярным — так это его разносторонность. Можно по-разному работать с этим окном, собирая информацию о приложении. Самая впечатляющая возможность заключается в том, что оно позволяет легко изменять" значение переменной, редактируя его в правой стороне окна. Вспомните обсуждение синтаксиса для выражений точек прерывания. В окне Watch используется такая же оценка выражений, поэтому и синтаксис расширенных точек прерывания, и правила составления выражений, и псевдорегистры могут использоваться и в окне Watch.

Форматирование данных и оценка выражений

Чтобы приобрести опыт манипулирования окном Watch, необходимо запомнить форматирующие символы, приведенные в табл. 5.3 и 5.4, которые получены из документации Visual C++ на MSDN. Форматный символ записывают через запятую после переменной. Наиболее полезный спецификатор формата для СОМ-программирования — hr. Если разместить в окне Watch выражение @ЕАХ,hr, то при переходе через вызов СОМ-метода можно увидеть результат вызова в понятной форме (@ЕАХ — это регистр Intel CPU, в котором хранятся возвращаемые значения). Применение форматных спецификаторов позволяет легко управлять видом данных и экономить огромное количество времени на их интерпретацию.

Таблица 5.3. Символы форматирования для переменных окна Watch

Символ

Описание формата

Пример

Вид на экране

d, i

Десятичное целое со знаком

(int)OxFOOOF065,d

-268373915

u

Десятичное целое без знака

0x0065, u

101

о

Восьмеричное целое без знака

OxF065,o

0170145

х, X

Шестнадцатеричное целое

61541, X

OxOOOOF065

1 , h

Префикс long или short для d, i, u, о, х, X

0x00406042, hx

OxOc22

£

Плавающая точка со знаком

3./2.,f

1.500000

е

Научная нотация со знаком

3./2,е

1.500000e+000

g

Плавающая точка или научная нотация со знаком, в зависимости от того, какой формат короче

3./2,g

1.5

с

Одиночный символ

0x0065, с

'e1

s

Строка

szHiWorld, s

"Hello world"

su

Строка Unicode

szWHiWorld, su

"Hello world"

st

Строка Unicode или ANSI, в зависимости от установки в AUTOEXP.DAT



hr

HRESULT или Win32 код ошибки

0x00000000, hr

S_OK

we

.Флажок класса Windows

0x00000040, we

WC_

DEFAULTCHAR (Заметим, что хотя этот формат и докуме

нтирован он не работает в Visual C++ 6)

wm

Номера Windows-сообщений

0x0010, wm

WM_CLOSE




Начало  Назад  Вперед



Книжный магазин