Отладчик Visual Studio - отображение целочисленных значений в шестнадцатеричном формате


152

Я использую Visual Studio 2008, и я только что заметил, что отладчик отображает целочисленные значения в виде Hex, когда я наводю курсор мыши на переменные, а также в непосредственном окне. Наверное, я случайно нажал на горячую клавишу или что-то в этом роде.

Кто-нибудь имел это раньше? Как установить его обратно в десятичном формате?


Хотите верьте, хотите нет, но это также расстраивало приращение объявленных целых чисел с большими значениями типа oopses f + 1 = 10 (dec).
Лори Стерн

Ответы:


273

Щелкните правой кнопкой мыши окно просмотра или окно немедленного просмотра и снимите флажок «Шестнадцатеричное отображение».

введите описание изображения здесь


4
не был доступен в диалоге инструментов. Единственный способ вернуть его обратно - это добавить переменную в окно наблюдения и щелкнуть правой кнопкой мыши в поле «Значение», а затем у меня появился флажок «Шестнадцатеричное отображение».
fizzer

12
Я смог сделать это в окне Call Stack в VS2010.
StuperUser

1
Был на панели инструментов отладки для меня.
Бреандан

2
Слава Богу, я избавился от этой глупой раздражающей вещи. Спасибо @Leniel
Али Umair

2
Все еще актуален в 2020 году с VS 2019!
Марк Левеск

45

Вы также можете выбрать шестнадцатеричное или десятичное отображение для каждой переменной в окне просмотра Visual Studio , добавив спецификатор формата отладчика к имени переменной. В окне просмотра введите:

myInt,h
myInt,d

Другими очень полезными спецификаторами формата являются ac(см. Сноску) для «всегда вычислять» и nqдля отображения «без кавычек». Их можно использовать вместе:

my_string_func(),ac,nq

nqполезно внутри DebuggerDisplayатрибутов, которые могут появляться в классе:

[DebuggerDisplay("{my_string_func(),nq}")]
class MyClass
{
    /* ...example continues below... */

... или на одном или нескольких полях внутри класса:

    [DebuggerDisplay("{some_field,nq}", Name="substitute name here")]
    int an_integer;

    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    String some_field;
}

http://msdn.microsoft.com/en-us/library/e514eeby(v=VS.100).aspx

  • обратите внимание, что более ранние версии страницы документации MSDN неправильно говорили «Ac» (с большой буквы «A») - что не работает

+1, но хотя MSDN утверждает, что hэто правильный модификатор для шестнадцатеричного отображения, кажется (по крайней мере, в моей версии, VS 2012 Premium), что xработает вместо (например, 1024,xвместо 1024,h). Размещение hвозвращает ошибку «CXX0026 неверный формат строки».
Groo

Я подозреваю, что это может зависеть от языка, на котором был написан отлаживаемый модуль. Конечно, синтаксис выражений отладчика изменяется в соответствии с текущим языком. Из вашего сообщения видно, что вы использовали C ++; Я ответил так, как будто для C #, хотя, возможно, я не должен был предположить, что, поскольку OP не указал.
Гленн

1
Это обеспечивает лучший дискреционный контроль при форматировании по сравнению со всем или ничем из «шестнадцатеричного отображения»
Фернандо Гонсалес Санчес

17

При запуске Visual Studio в режиме отладки отображается шестнадцатеричная кнопка для включения / выключения шестнадцатеричного отображения.

Режим отладки Visual Studio - шестнадцатеричная кнопка


Это кнопка с пропуском, такая же, как шестнадцатеричный дисплей в контекстном меню, спасибо.
Фредрик Гаусс

11

Щелкните правой кнопкой мыши по клиентскому пространству почти в каждом окне отладки (кроме Immediate Window) - смотрите / locals / autos / threads / стек вызовов - и снимите флажок «Шестнадцатеричное отображение» . При отладке также имеется кнопка «Hex» на панели инструментов отладки (по умолчанию она имеет право «Step Over»).


9

В Visual Studio 2010 я также видел его на панели инструментов отладки, он был выделен желтым «Hex», я просто щелкнул по нему, и он вернулся к (нормальным) десятичным значениям


3

В ближайшем окне вы можете снять флажок шестнадцатеричный дисплей.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.