2008-09-16 214 views
125

如果您有一個靜態分配的數組,Visual Studio調試器可以輕鬆顯示所有數組元素。但是,如果您有一個動態分配的數組並且由指針指向,那麼當您單擊+展開數組時,它將僅顯示數組的第一個元素。有沒有一種簡單的方法可以告訴調試器,將這些數據顯示爲Foo類型的數組和X型?如何在Visual Studio調試器中顯示動態分配的數組?

回答

169

是的,很簡單。 說你有

char *a = new char[10]; 

在調試器中寫着:

a,10 

會告訴你的內容就好像它是一個數組。

+9

這是一個偉大的把戲,但如果你的指針指向結構數組中,我發現,「一個擴展的單個元素,10「在觀察窗口中本身不可擴展。這意味着你不能用這種方法挖掘數組的第三個元素。那是可以克服的嗎? – SirPentor 2012-05-11 18:20:41

+0

@SirPentor我有同樣的問題。你找到了解決方案嗎? – becko 2012-08-22 19:43:59

19

在監視窗口中,在數組名稱後面添加一個逗號,以及要顯示的項目數量。

0

我還沒有找到一種方法來使用多維數組。但你至少可以(如果你知道你想要的條目的索引)添加一個手錶到一個特定的值。只需使用索引運算符。

對於命名當前的陣列,其中有一個名爲Attribs裏的數組,其內部有一個名爲ATTRIB陣列,它應該是這樣的,如果你想有26位:

((*((*current).Attribs)).Attrib)[26] 

你也可以使用偏移量

((*((*current).Attribs)).Attrib)+25 

將顯示ne「next」25個元素。 (我正在使用VS2008,這隻顯示了最多25個元素)。

9

重訪:

讓我們假設你有一個低於指針:

double ** a; // assume 5*10 

,那麼你可以在Visual Studio調試手錶下面寫:

(double(*)[10]) a[0],5 

將其轉換爲如下所示的數組,您可以一次查看所有內容。

double[5][10] a; 
27

有兩種方法在陣列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 
}; 

一種方法是用一個監視窗口(調試/窗/觀看)。添加監視=

m4x4,16 

此列表中顯示的數據:

enter image description here

另一種方法是使用Memory窗口(調試/視窗/內存)。指定一個存儲器起始地址=

m4x4 

這在表中,這是更好的用於二維和三維矩陣顯示數據:

enter image description here

內存窗口上點擊右鍵,以確定如何二進制數據可視化。選擇僅限於整數,浮點數和一些文本編碼。

4

另一種方法是在MSDN中指定。

總之,您可以將字符數組顯示爲幾種類型的字符串。如果你有一個數組聲明:

char *a = new char[10]; 

你可以打印出來作爲在監視窗口中Unicode字符串有以下:

a,su 

請參閱MSDN頁上的表格所有的不同的轉換可能,因爲有不少。許多不同的字符串變種,變種打印單個項目數組中,等

1

你可以找到很多東西,你可以用這種寶石在監視窗口中的變量在文檔中做一個列表: https://msdn.microsoft.com/en-us/library/75w45ekt.aspx

對於一個變量,還有在其他的答案已經提到的像

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) 
3

因爲,

int **a; //row x col 

添加此觀看

(int(**)[col])a,row 
相關問題