[英]How to display a dynamically allocated array in the Visual Studio debugger?
如果您有一個靜態分配的數組,Visual Studio 調試器可以輕松顯示所有數組元素。 但是,如果您有一個動態分配並由指針指向的數組,則當您單擊 + 將其展開時,它只會顯示該數組的第一個元素。 有沒有一種簡單的方法可以告訴調試器,將此數據顯示為類型為 Foo 且大小為 X 的數組?
是的,簡單。 說你有
char *a = new char[10];
在調試器中寫入:
a,10
將向您顯示內容,就好像它是一個數組一樣。
有兩種方法可以查看數組 m4x4 中的數據:
float m4x4[16]={
1.f,0.f,0.f,0.f,
0.f,2.f,0.f,0.f,
0.f,0.f,3.f,0.f,
0.f,0.f,0.f,4.f
};
一種方法是使用 Watch 窗口 (Debug/Windows/Watch)。 添加手表 =
m4x4,16
這將在列表中顯示數據:
另一種方法是使用內存窗口(調試/Windows/內存)。 指定內存起始地址 =
m4x4
這在表格中顯示數據,這對於二維和三維矩陣更好:
右鍵單擊“內存”窗口以確定二進制數據的可視化方式。 選擇僅限於整數、浮點數和一些文本編碼。
在監視窗口中,在數組名稱和要顯示的項目數量后添加逗號。
重溫:
讓我們假設您有一個以下指針:
double ** a; // assume 5*10
那么您可以在 Visual Studio 調試監視中編寫以下內容:
(double(*)[10]) a[0],5
這會將其轉換為如下所示的數組,您可以一次性查看所有內容。
double[5][10] a;
為了,
int **a; //row x col
添加此觀看
(int(**)[col])a,row
在MSDN 中指定了另一種方法來做到這一點。
簡而言之,您可以將字符數組顯示為多種類型的字符串。 如果你有一個數組聲明為:
char *a = new char[10];
您可以使用以下命令在監視窗口中將其打印為 unicode 字符串:
a,su
有關所有可能的不同轉換,請參閱 MSDN 頁面上的表格,因為有很多。 許多不同的字符串變體、用於打印數組中單個項目的變體等。
您可以在文檔中的此 gem 的監視窗口中找到可以對變量執行的許多操作的列表: https : //msdn.microsoft.com/en-us/library/75w45ekt.aspx
對於變量a,其他答案中已經提到了一些事情,例如
a,10
a,su
但是格式和大小還有很多其他說明符,例如:
a,en (shows an enum value by name instead of the number)
a,mb (to show 1 line of 'memory' view right there in the watch window)
對於 MFC 數組(CArray、CStringArray、...),請點擊其提示 #4 中的下一個鏈接
http://www.codeproject.com/Articles/469416/10-More-Visual-Studio-Debugging-Tips-for-Native-De
例如對於“CArray pArray”,在觀察窗口中添加
pArray.m_pData,5
看前5個元素。
如果 pArray 是二維 CArray,您可以使用以下語法查看第二維的任何元素:
pArray.m_pData[x].m_pData,y
我還沒有找到將它與多維數組一起使用的方法。 但是您至少可以(如果您知道所需條目的索引)將監視添加到特定值。 只需使用索引運算符。
對於一個名為 current 的數組,它里面有一個名為 Attribs 的數組,里面有一個名為 Attrib 的數組,如果你想定位 26,它應該看起來像這樣:
((*((*current).Attribs)).Attrib)[26]
您還可以使用偏移量
((*((*current).Attribs)).Attrib)+25
將顯示 ne "next" 25 個元素。 (我使用的是 VS2008,這最多只顯示 25 個元素)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.