Aracılığıyla paylaş


Visual Studio hata ayıklayıcısında C++ için biçim tanımlayıcıları

Saat, Otomatikler ve Yereller pencerelerinde biçim tanımlayıcılarını kullanarak bir değerin görüntülendiği biçimi değiştirebilirsiniz.

Biçim tanımlayıcılarını Anında penceresinde, Komut penceresinde, izleme noktalarında ve hatta kaynak pencerelerde de kullanabilirsiniz. Bu pencerelerdeki bir ifadede durakladığınızda, sonuç bir Veri İpucu olarak görünür. DataTip ekranı biçim tanımlayıcısını yansıtır.

Uyarı

Visual Studio yerel hata ayıklayıcısı yeni bir hata ayıklama altyapısına değiştiğinde, bazı yeni biçim tanımlayıcıları eklendi ve bazı eskileri kaldırıldı. C++/CLI ile yerel ve yönetilen bileşenlerin birlikte çalışabilirliği üzerine hata ayıklaması yaptığınızda eski hata ayıklayıcı hala kullanılmaktadır.

Biçim tanımlayıcılarını ayarlama

Aşağıdaki örnek kodu kullanacağız:

int main() {
    int my_var1 = 0x0065;
    int my_var2 = 0x0066;
    int my_var3 = 0x0067;
}

my_var1 Değişkeni hata ayıklarken Watch penceresine ekleyin, Debug>Windows>Watch>Watch 1. Ardından değişkene sağ tıklayın ve Onaltılık Görüntü seçin. Şimdi gözcü penceresinde 0x0065 değeri gösterilir. Bu değerin tamsayı yerine karakter olarak ifade edilmiş olduğunu görmek için, önce sağ tıklayın ve Onaltılık Ekran'ın seçimini kaldırın. Ardından, değişken adından sonra Ad sütununa , c karakter biçimi belirticisini ekleyin. Değer sütunu artık 101 'e' gösteriyor.

101 'e' değerine ve int türüne sahip my_var1.c dosyasını gösteren seçili bir satırın gösterildiği Visual Studio Watch penceresinin ekran görüntüsü.

İzleme penceresindeki değere virgül (,) ekleyerek kullanılabilir biçim tanımlayıcıları listesini görüntüleyebilir ve seçebilirsiniz.

WatchFormatSpecDropdown

Biçim tanımlayıcıları

Aşağıdaki tablolarda, Visual Studio'da kullanabileceğiniz biçim tanımlayıcıları açıklanmaktadır. Kalın yazılmış belirleyiciler yalnızca yeni hata ayıklayıcı için desteklenir ve C++/CLI ile birlikte çalışma hata ayıklaması için desteklenmez.

Tanımlayıcı Biçim Özgün saat değeri Görüntülenen Değer
d onluk tamsayı 0x00000066 102
o işaretsiz sekizlik sayı 0x00000066 000000000146
x

h
onaltılık tamsayı 102 0xcccccccc
X

H
onaltılık tamsayı 102 0xCCCCCCCC
Xb

Hb
onaltılık tamsayı (başta 0x olmadan) 102 cccccccc
Xb

Hb
onaltılık tamsayı (başta 0x olmadan) 102 CCCCCCCC
b imzasız ikili tamsayı Yirmi beş 0b00000000000000000000000000011001
Bb işaretsiz ikili tamsayı (başında 0b olmadan) Yirmi beş 00000000000000000000000000011001
e bilimsel gösterim 25000000 2,500000e+07
g bilimsel veya kayan noktanın kısası 25000000 2,5e+07
c tek karakter 0x0065 101 'e'
s const char* dizesi (tırnak işaretleri ile) <konum> "hello world" "merhaba dünya"
Sb const char* dizesi (tırnak işareti yok) <konum> "hello world" Merhaba Dünya
s8 UTF-8 dizesi <location> "Bu bir UTF-8 kahve fincanı ☕" "Bu bir UTF-8 kahve fincanı ☕"
s8b UTF-8 dizesi (tırnak işareti yok) <konum> "hello world" Merhaba Dünya
su Unicode (UTF-16 kodlama) dizesi (tırnak işaretleri ile) <location> L"hello world" L"merhaba dünya"

"merhaba dünya"
sub Unicode (UTF-16 kodlama) dizesi (tırnak işareti yok) <konum> L"hello world" Merhaba Dünya
bstr BSTR ikili dizesi (tırnak işaretleri ile) <konum> L"merhaba dünya" L"merhaba dünya"
env Ortam bloğu (çift null karakter sonlandırmalı dize) <konum> L"=::=::\\" L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=...
s32 UTF-32 dizesi (tırnak işaretleri ile) <location> U"merhaba dünya" U"hello world"
s32b UTF-32 dizesi (tırnak işareti yok) <location> U"hello world" Merhaba Dünya
en enum Cumartesi(6) Cumartesi
Hv İşaretçi türü - denetlenen işaretçi değerinin bir dizinin yığın ayırmasının sonucu olduğunu gösterir; örneğin, new int[3]. <location>{<first member>} <lokasyon>{<ilk üye>, <ikinci üye>, ...}
na Nesne işaretçisinin bellek adresini gizler. <location>, {member=value...} {member=value...}
Nd Türetilmiş sınıfları göz ardı ederek yalnızca temel sınıf bilgilerini gösterir. (Shape*) square temel sınıf ve türetilmiş sınıf bilgilerini içerir Yalnızca temel sınıf bilgilerini görüntüler
hr HRESULT veya Win32 hata kodu. Hata ayıklayıcısı bunların kodunu otomatik olarak çözdiğinden, HRESULTs için bu tanımlayıcı artık gerekli değildir. S_OK S_OK
wc Pencere sınıfı bayrağı 0x0010 WC_DEFAULTCHAR (Varsayılan Karakter)
wm Windows ileti numaraları 16 WM_CLOSE
Nr "Ham Görünüm" öğesini gizle
nvo Yalnızca sayısal değerler için "Ham Görünüm" öğesini göster
! ham biçim, herhangi bir veri türü görünümü özelleştirmesini yoksayarak <özelleştirilmiş gösterim> 4
kulp win32 tutamacı hakkındaki bilgileri görüntüler 0x000000000000009c Handle hakkında iş parçacığı kimliği gibi yararlı bilgileri görüntüler.

Uyarı

hv biçim tanımlayıcısı mevcut olduğunda, hata ayıklayıcı arabelleğin uzunluğunu belirlemeye ve bu sayıda öğeyi görüntülemeye çalışır. Hata ayıklayıcının bir dizinin tam arabellek boyutunu bulması her zaman mümkün olmadığından, mümkün olduğunda bir boyut belirtici (pBuffer,[bufferSize]) kullanmanız gerekir. hv biçim tanımlayıcısı, arabellek boyutu kolaylıkla mevcut olmadığında kullanışlıdır.

İşaretçiler için boyut tanımlayıcılarını dizi olarak boyutlandırma

Dizi olarak görüntülemek istediğiniz nesnenin işaretçisi varsa, dizi öğelerinin sayısını belirtmek için bir tamsayı veya ifade kullanabilirsiniz.

Belirleyici Biçim Özgün saat değeri Görüntülenen Değer
n Ondalık veya onaltılık tamsayı pBuffer,[32]

pBuffer,[0x20]
32 öğe dizisi olarak görüntülenir pBuffer .
[exp] Tamsayı olarak değerlendirilen geçerli bir C++ ifadesi. pBuffer,[bufferSize] pBuffer öğesini bir öğe dizisi bufferSize olarak görüntüler.
expand(n) Tamsayı olarak değerlendirilen geçerli bir C++ ifadesi pBuffer, expand(2) Üçüncü öğeyi görüntüler pBuffer

C++/CLI ile birlikte çalışmada hata ayıklamak için biçim tanımlayıcıları

Belirleyici Biçim Özgün saat değeri Görüntülenen Değer
o işaretsiz sekizlik tamsayı 0xF065 0170145
x

X
Onaltılık tamsayı 61541 0x0000f065
c tek karakter <konum> 101 'e'
s const char* (tırnak işaretleri ile) <konum> "merhaba dünya"
su const wchar_t*

const char16_t* (tırnak işaretleri ile)
<yer> L"merhaba dünya"
sub const wchar_t*

const char16_t*
<konum> Merhaba Dünya
s8 const char* (tırnak işaretleri ile) <yer> "merhaba dünya"
hr HRESULT veya Win32 hata kodu.
Hata ayıklayıcısı bunların kodunu otomatik olarak çözdiğinden, HRESULTs için bu tanımlayıcı artık gerekli değildir.
S_OK S_OK
WC Pencere sınıfı bayrağı 0x00000040, WC_DEFAULTCHAR
wm Windows ileti numaraları 0x0010 WM_CLOSE
! ham biçim, herhangi bir veri tipi görünümü özelleştirmesini dikkate almamak <özelleştirilmiş gösterim> 4

d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw ve u tanımlayıcıları, yerel kod ve C++/CLI kodu için eski hata ayıklayıcıyı gerektirir, bu da Visual Studio 2022 veya sonraki sürümlerde desteklenmez.

Kalın yazı tipindeki tanımlayıcılar yalnızca yerel ve C++/CLI kodunda hata ayıklama için desteklenir. Bu tanımlayıcılar, Yönetilen Uyumluluk Modu kullanılarak belirtilen eski hata ayıklayıcıyı gerektirir.

Tanımlayıcı Biçim Özgün saat değeri Görüntülenen Değer
d

ben
imzalı ondalık tamsayı 0xF000F065 -268373915
u işaretsiz ondalık tamsayı 0x0065 101
o işaretsiz sekizlik sayı 0xF065 0170145
x

X
Onaltılık tamsayı 61541 0x0000f065
l

h
uzun veya kısa prefiks için: d, i, u, o, x, X 00406042 0x0c22
f imzalı kayan nokta (3./2.), f 1.500000
e işaretli bilimsel gösterim (3.0/2.0) 1,500000e+000
g imzalı kayan nokta veya imzalı bilimsel gösterim
hangisi daha kısaysa
(3.0/2.0) 1.5
c tek karakter <yer> 101 'e'
s const char* (tırnak işaretleri ile) <yer> "merhaba dünya"
su const wchar_t*

const char16_t* (tırnak işaretleri ile)
<yer> L"merhaba dünya"
sub const wchar_t*

const char16_t*
<yer> Merhaba Dünya
s8 const char* (tırnak işaretleri ile) <yer> "merhaba dünya"
hr HRESULT veya Win32 hata kodu.
Hata ayıklayıcısı bunların kodunu otomatik olarak çözdiğinden, HRESULTs için bu tanımlayıcı artık gerekli değildir.
S_OK S_OK
WC Pencere sınıfı bayrağı 0x00000040, WC_DEFAULTCHAR
wm Windows ileti numaraları 0x0010 WM_CLOSE
! ham biçim, herhangi bir veri tipi görünümü özelleştirmesini dikkate almamak <özelleştirilmiş gösterim> 4

C++/CLI ile arayüz hata ayıklamasında bellek konumları için biçim tanımlayıcıları

Aşağıdaki tabloda bellek konumları için kullanılan biçimlendirme simgeleri açıklanmaktadır. Bir konumu değerlendiren herhangi bir değer veya ifadeyle bir bellek konumu tanımlayıcısı kullanabilirsiniz.

Kalın yazı tipindeki tanımlayıcılar yalnızca yerel ve C++/CLI kodunda hata ayıklama için desteklenir. Bunun için Yönetilen Uyumluluk Modu kullanılarak belirtilen eski hata ayıklayıcı gerekir.

Symbol Biçim Özgün saat değeri Görüntülenen Değer
ma 64 ASCII karakter 0x0012ffac 0x0012ffac .4...0...".0W&.......1W.0.:W..1...."..1.JO&.1.2.."..1...0y....1
m Onaltılık olarak 16 bayt ve ardından 16 ASCII karakter 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...". 0&...
MB Onaltılık olarak 16 bayt ve ardından 16 ASCII karakter 0x0012ffac 0x0012ffac B3 34 CB 00 84 30 94 80 FF 22 8A 30 57 26 00 00 .4...0...".0W&..
mw 8 sözcük 0x0012ffac 0x0012ffac 34B3 00CB 3084 8094 22FF 308A 2657 0000
md 4 çift kelime 0x0012ffac 0x0012ffac 00CB34B3 80943084 308A22FF 00002657
mq 2 dörtlü 0x0012ffac 0x0012ffac 7ffdf0000000000000 5f441a790012fdd4
mu 2 baytlık karakterler (Unicode) 0x0012ffac 0x0012ffac 8478 77f4 ffff ffff 0000 0000 0000 0000

C++/CLI ile birlikte çalışma hata ayıklamasında diziler olarak işaretçiler için boyut tanımlayıcısı

Dizi olarak görüntülemek istediğiniz nesnenin işaretçisi varsa, dizi öğelerinin sayısını belirtmek için bir tamsayı kullanabilirsiniz.

Tanımlayıcı Biçim Expression Görüntülenen Değer
n Ondalık tamsayı pBuffer[32] 32 öğeli bir dizi olarak görüntüler pBuffer .