Определители формата в C++
При отладке машинного кода в окне контрольных значений или диалоговом окне Проверка или Быстрая проверка можно изменить формат, в котором показаны значения, с помощью описателей формата.
(Большинство описателей формата используется только для машинного кода, но в Visual C# имеется ограниченный набор описателей.См. раздел Определители формата в C#).
Можно также использовать настраиваемые описатели формата в окне интерпретация, командном окне, а даже в окнах источника.Если приостановка для выражения в этих окнах, результат отображается в Подсказке.Окна подсказки будут отображать описатель формата.
![]() |
---|
Отладчик Visual Studio 2012 native перешел в новый обработчик отладки.Был включен в этом изменении добавление нескольких новых описателей формата и удаления некоторых старых одного.Переход не завершен и более старая отладчик продолжает использовать при выполнении отладки взаимодействия (смешанного собственного и нерегламентированном) и при отладке с помощью правку C++ и продолжить.Указывает, что в подразделах этого раздела описатели формата для каждого обработчика отладки.
|
Содержание раздела
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 |
Укажите размер описатели для указателей, такие как массивы в 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 |
Областей памяти описателей формата при отладке взаимодействия 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 |
Укажите размер описатель для указателей как массивы в отладке взаимодействия и правке C++ и продолжить
Если есть указатель на объект, который требуется просмотреть в виде массива, то можно использовать целое число для указания числа элементов массива:
Описатель |
Format |
Выражение |
Отображаемое значение |
---|---|---|---|
n |
Десятичное целое число |
pBuffer [32] |
Отображает pBuffer как массив 32 элементов. |