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 duraklatırsanız sonuç bir Veri İpucu'nda görünür. Veri İpucu ekranı biçim tanımlayıcısını yansıtır.
Dekont
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 birlikte çalışma (karma yerel ve yönetilen) hata ayıklaması yaptığınızda eski hata ayıklayıcı hala kullanılı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
Hata>ayıklarken windows watch>watch 1'de hata ayıklarken> watch penceresine değişkeni ekleyin. Ardından değişkene sağ tıklayın ve Onaltılık Görüntü'leri 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.
İzleme penceresindeki değere virgül (,) ekleyerek kullanılabilir biçim tanımlayıcıları listesini görüntüleyebilir ve seçebilirsiniz.
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 olarak tanımlayıcılar yalnızca yeni hata ayıklayıcı için desteklenir, C++/CLI ile birlikte çalışma hata ayıklaması için desteklenmez.
Belirleyici | Biçimlendir | Özgün saat değeri | Görüntülenen Değer |
---|---|---|---|
d | ondalık tamsayı | 0x00000066 | 102 |
o | işaretsiz sekizli tamsayı | 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ı | 25 | 0b000000000000000000000000000000000011001 |
Bb | işaretsiz ikili tamsayı (başında 0b olmadan) | 25 | 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 | <konum> "Bu bir UTF-8 kahve fincanıdır â ̃•" | "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) | <konum> L"hello world" | L"hello world" u"hello world" |
alt | 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"hello world" | L"hello world" |
Env | Ortam bloğu (çift null sonlandırılan dize) | <konum> L"=::=::\\" | L"=::=::\\\0=C:=C:\\windows\\system32\0ALLUSERSPROFILE=... |
s32 | UTF-32 dizesi (tırnak işaretleri ile) | <location> U"hello world" | 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>} | <location>{<first member>, <second member>, ...} |
Na | Nesne işaretçisinin bellek adresini gizler. | <location>, {member=value...} | {member=value...} |
Nd | Türetilmiş sınıfları yoksayarak yalnızca temel sınıf bilgilerini görüntüler | (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 |
sa | 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 |
Wm | Windows ileti numaraları | 16 | WM_CLOSE |
Nr | "Ham Görünüm" öğesini gösterme | ||
nvo | Yalnızca sayısal değerler için "Ham Görünüm" öğesini göster | ||
! | ham biçim, veri türü görünümleri özelleştirmelerini yoksayma | <özelleştirilmiş gösterim> | 4 |
Işlemek | win32 tutamacı hakkındaki bilgileri görüntüler | 0x000000000000009c | İş parçacığı kimliği gibi tanıtıcı hakkında yararlı bilgiler görüntüler. |
Dekont
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 hazır olarak kullanılamadığı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çimlendir | Ö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) | Öğesinin üçüncü öğesini görüntüler pBuffer |
C++/CLI ile birlikte çalışma hata ayıklaması için biçim tanımlayıcıları
Belirleyici | Biçimlendir | Özgün saat değeri | Görüntülenen Değer |
---|---|---|---|
o | işaretsiz sekizli 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) |
<konum> | L"hello world" |
alt | const wchar_t* const char16_t* |
<konum> | Merhaba Dünya |
s8 | const char* (tırnak işaretleri ile) | <konum> | "merhaba dünya" |
sa | 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, veri türü görünümü özelleştirmelerini yoksayma | <özelleştirilmiş gösterim> | 4 |
d, e, f, g, h, i, l, m, ma, mb, md, mq, mu, mw ve yerel ve C++/CLI kodu için tanımlayıcılar, Visual Studio 2022 veya sonraki sürümlerde desteklenmeyen eski hata ayıklayıcıyı gerektirir.
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.
Belirleyici | Biçimlendir | Özgün saat değeri | Görüntülenen Değer |
---|---|---|---|
d ı |
imzalı ondalık tamsayı | 0xF000F065 | -268373915 |
U | işaretsiz ondalık tamsayı | 0x0065 | 101 |
o | işaretsiz sekizli tamsayı | 0xF065 | 0170145 |
x X |
Onaltılık tamsayı | 61541 | 0x0000f065 |
L h |
için uzun veya kısa ön ek: d, i, u, o, x, X | 00406042 | 0x0c22 |
f | imzalı kayan nokta | (3./2.), f | 1.500000 |
E | imzalı bilimsel gösterimi | (3.0/2.0) | 1,500000e+000 |
G | imzalı kayan nokta veya imzalı bilimsel gösterimi, hangisi daha kısaysa |
(3.0/2.0) | 1.5 |
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) |
<konum> | L"hello world" |
alt | const wchar_t* const char16_t* |
<konum> | Merhaba Dünya |
s8 | const char* (tırnak işaretleri ile) | <konum> | "merhaba dünya" |
sa | 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, veri türü görünümü özelleştirmelerini yoksayma | <özelleştirilmiş gösterim> | 4 |
C++/CLI ile birlikte çalışma 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.
Simge | Biçimlendir | Özgün saat değeri | Görüntülenen Değer |
---|---|---|---|
ma | 64 ASCII karakter | 0x0012ffac | 0x0012ffac .4...0...". 0&....... 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...". 0&... |
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.
Belirleyici | Biçimlendir | Expression | Görüntülenen Değer |
---|---|---|---|
n | Ondalık tamsayı | pBuffer[32] | 32 öğeli bir dizi olarak görüntüler pBuffer . |