Поделиться через


Определители формата в C++

При отладке машинного кода в окне контрольных значений или диалоговом окне Проверка или Быстрая проверка можно изменить формат, в котором показаны значения, с помощью описателей формата.

(Большинство описателей формата используется только для машинного кода, но в Visual C# имеется ограниченный набор описателей.См. раздел Определители формата в C#).

Можно также использовать настраиваемые описатели формата в окне интерпретация, командном окне, а даже в окнах источника.Если приостановка для выражения в этих окнах, результат отображается в Подсказке.Окна подсказки будут отображать описатель формата.

ПримечаниеПримечание

Отладчик Visual Studio 2012 native перешел в новый обработчик отладки.Был включен в этом изменении добавление нескольких новых описателей формата и удаления некоторых старых одного.Переход не завершен и более старая отладчик продолжает использовать при выполнении отладки взаимодействия (смешанного собственного и нерегламентированном) и при отладке с помощью правку C++ и продолжить.Указывает, что в подразделах этого раздела описатели формата для каждого обработчика отладки.

  • Visual Studio 2012 format specifiers описатели формата в новом обработчике отладки.

  • Format specifiers for interop debugging and C++ edit and continue описатели формата в более старом обработчике отладки.

Содержание раздела

Example

Visual Studio 2012 format specifiers

  • Size specifiers for pointers as arrays in Visual Studio 2012

Format specifiers for interop debugging and C++ edit and continue

  • Format specifiers memory locations in interop debugging and C++ edit and continue

  • Size specifier for pointers as arrays in interop debugging and C++ edit and continue

Пример

Предположим, что nVar — целочисленная переменная, и в окне "Наблюдение" показано, что она содержит значение 0x0065.Чтобы представить это значение в символьном, а не целочисленном формате, в столбце "Имя" после имени переменной добавьте указатель символьного формата c:

Вместо целочисленного значения 0x0065 столбец "Значение" теперь показывает символьное значение 101 'e'.

Если требуется применить указатель формата к элементам массива или членам объекта, необходимо применить его непосредственно к каждому элементу или члену.Ко всему массиву или объекту применить описатель невозможно.Например, предположим, что имеется массив nArray и необходимо представить первые четыре элемента в символьном формате.Для этого достаточно ввести в окне Наблюдение следующие выражения:

nArray[0],c
nArray[1],c
nArray[2],c
nArray[3],c

Описатели формата Visual Studio 2012

В следующей таблице показаны описателям форматов, которые можно использовать в Visual Studio 2012 при нет при отладке кода взаимодействия (смешанные C++ и нерегламентированном) или с помощью правку C++ и продолжить.

Описатели в полужирныйнет поддерживается для отладки взаимодействия или отладки с правкой C++ и продолжается.

Описатель

Format

Выражение

Отображаемое значение

d

десятичное целое число

0xF000F065, d

-268373915

o

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

0xF065, o

0170145

x

h

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

61546, x

61541 - h

0x0000f06a

X

H

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

61541 x

61546 - h

0x0000F06A

c

Отдельный знак

0x0065, c

101 'e'

s

Строка.

0x0012fde8, s

"Hello world"

su

строка Юникода

0x0012fde8, su

"Hello world"

s8

Строка UTF-8

0x0012fde8, s8

"Hello world"

s8b

Строка UTF-8

0x0012fde8, s8b

Hello world

bstr

Строка BSTR

0x0032fe8, bstr

Чем выше там

nd

pb, nd

Отображает только данные базового класса в производных классах, игнорируя pb

hr

Код ошибки HRESULT или Win32(в настоящее время отладчик автоматически расшифровывает коды HRESULT, и в этих случаях данный описатель не требуется)

0x00000000L, hr

S_OK

wc

Флаг класса Window

0x00000040, wc

WC_DEFAULTCHAR

wm

Номер сообщения Windows

0x0010, wm

WM_CLOSE

!

Необработанный формат, все настройки представления типов данных не учитываются

i !

4

75w45ekt.collapse_all(ru-ru,VS.110).gifУкажите размер описатели для указателей, такие как массивы в Visual Studio 2012

Если имеется указатель на объект, то нужно просмотреть в виде массива можно использовать целое число или выражение для определения количества элементов массива.

Описатель

Format

Выражение

Отображаемое значение

n

Десятичное число или целое число hex

pBuffer [32]

0x20 pBuffer []

Отображает pBuffer как массив 32 элементов.

[exp]

Является выражением допустимого C++, результатом которого является целым числом.

pBuffer [bufferSize]

BufferSize evaluates и отображает pBuffer как массив оцененного количества элементов.

разверните (n)

pBuffer разверните узел (1,2)

Указывает третий дочерний элемент второго дочернего элемента pBuffer

Описатели формата для отладки взаимодействия C++ и изменяют и продолжить

Описатели в полужирный поддерживаются только для отладки взаимодействия и отладки с правкой C++ и продолжается.

Описатель

Format

Выражение

Отображаемое значение

d,i

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

0xF000F065, d

-268373915

u

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

0x0065, u

101

o

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

0xF065, o

0170145

x,X

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

61541, x

0x0000f065

l,h

Префикс длинного или короткого формата для спецификаторов d, i, u, o, x и X

00406042,hx

0x0c22

f

Число с плавающей запятой со знаком

(3./2.), f

1.500000

e

Число в научном представлении со знаком

(3./2.), e

1.500000e+000

g

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

(3./2.), g

1.5

c

Отдельный знак

0x0065, c

101 'e'

s

Строка.

0x0012fde8, s

"Hello world"

su

строка Юникода

0x0012fde8, su

"Hello world"

s8

Строка UTF-8

0x0012fde8, s8

"Hello world"

hr

Код ошибки HRESULT или Win32(в настоящее время отладчик автоматически расшифровывает коды HRESULT, и в этих случаях данный описатель не требуется)

0x00000000L, hr

S_OK

wc

Флаг класса Window

0x00000040, wc

WC_DEFAULTCHAR

wm

Номер сообщения Windows

0x0010, wm

WM_CLOSE

!

Необработанный формат, все настройки представления типов данных не учитываются

i !

4

75w45ekt.collapse_all(ru-ru,VS.110).gifОбластей памяти описателей формата при отладке взаимодействия C++ и изменяют и продолжить

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

Символ

Format

Выражение

Отображаемое значение

ma

64 знака ASCII

<адрес>, ma

0x0012ffac .4...0...".0W&.......1W&.0.:W..1...."..1.JO&.1.2.."..1...0y....1

m

16 байт в шестнадцатеричном формате и затем 16 знаков ASCII

<адрес>, m

0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mb

16 байт в шестнадцатеричном формате и затем 16 знаков ASCII

<адрес>, mb

0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..

mw

8 слов

<адрес>, mw

0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000

md

4 двойных слова

<адрес>, md

0x0012ffac 00CB34B3 80943084 308A22FF 00002657

mq

2 учетверенных слова

<адрес>, mq

0x0012ffac 7ffdf00000000000 5f441a790012fdd4

mu

2-байтные знаки (Юникод)

<адрес>, mu

0x0012fc60 8478 77f4 ffff ffff 0000 0000 0000 0000

75w45ekt.collapse_all(ru-ru,VS.110).gifУкажите размер описатель для указателей как массивы в отладке взаимодействия и правке C++ и продолжить

Если есть указатель на объект, который требуется просмотреть в виде массива, то можно использовать целое число для указания числа элементов массива:

Описатель

Format

Выражение

Отображаемое значение

n

Десятичное целое число

pBuffer [32]

Отображает pBuffer как массив 32 элементов.