it-swarm-ko.tech

Visual Studio 디버거에서 동적으로 할당 된 배열을 표시하는 방법은 무엇입니까?

정적으로 할당 된 배열이있는 경우 Visual Studio 디버거는 모든 배열 요소를 쉽게 표시 할 수 있습니다. 그러나 동적으로 할당되고 포인터로 가리키는 배열이있는 경우 +를 클릭하여 확장하면 배열의 첫 번째 요소 만 표시됩니다. 디버거에 알려주는 쉬운 방법이 있습니까?이 데이터를 Foo 유형 및 X 크기의 배열로 표시합니까?

142
Adam Rosenfield

예, 간단합니다. 당신이 있다고 말해

char *a = new char[10];

디버거에 쓰기 :

a,10

마치 배열 인 것처럼 내용을 보여줍니다.

187
shoosh

배열 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
};

한 가지 방법은 조사 식 창 (Debug/Windows/Watch)을 사용하는 것입니다. 시계 추가 =

m4x4,16

목록에 데이터가 표시됩니다.

enter image description here

다른 방법은 메모리 창 (디버그/Windows/메모리)입니다. 메모리 시작 주소 지정 =

m4x4

이것은 테이블에 데이터를 표시하며, 2 차원 및 3 차원 행렬에 더 좋습니다.

enter image description here

메모리 창을 마우스 오른쪽 버튼으로 클릭하여 이진 데이터의 시각화 방법을 결정하십시오. 선택은 정수, 부동 수 및 일부 텍스트 인코딩으로 제한됩니다.

32
Riaz Rizvi

조사 식 창에서 배열 이름과 표시 할 항목 수 뒤에 쉼표를 추가하십시오.

21
Drealmer

재 방문 :

아래 포인터가 있다고 가정 해 봅시다.

double ** a; // assume 5*10

그런 다음 Visual Studio 디버그 시계에서 아래에 쓸 수 있습니다.

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

아래와 같이 배열로 캐스팅하고 모든 내용을 한 번에 볼 수 있습니다.

double[5][10] a;
10
Gengpu Liu

에 대한,

int **a; //row x col

이것을보고 추가하십시오

(int(**)[col])a,row
5
vicky

이를 수행하는 또 다른 방법은 여기 MSDN 에 지정되어 있습니다.

즉, 문자형 배열을 여러 유형의 문자열로 표시 할 수 있습니다. 다음과 같이 선언 된 배열이있는 경우 :

char *a = new char[10];

다음과 같이 시계 창에서 유니 코드 문자열로 인쇄 할 수 있습니다.

a,su

몇 가지가 있기 때문에 가능한 모든 변환에 대해서는 MSDN 페이지의 표를 참조하십시오. 다양한 문자열 변형, 배열의 개별 항목을 인쇄하는 변형 등.

4
Taylor Price

팁 # 4의 다음 링크 다음에 오는 MFC 배열 (CArray, CStringArray, ...)

http://www.codeproject.com/Articles/469416/10-More-Visual-Studio-Debugging-Tips-for-Native-De

예를 들어 "CArray pArray"의 경우 조사 식 창에 추가하십시오.

     pArray.m_pData,5 

처음 5 개 요소를 볼 수 있습니다.

PArray가 2 차원 CArray 인 경우 다음 구문을 사용하여 2 차원의 모든 요소를 ​​볼 수 있습니다.

     pArray.m_pData[x].m_pData,y
1
dabinsi

이 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)
1
Legolas

나는 이것을 다차원 배열과 함께 사용하는 방법을 찾지 못했습니다. 그러나 (원하는 항목의 색인을 알고 있다면) 시계를 특정 값으로 추가 할 수 있습니다. 간단히 인덱스 연산자를 사용하십시오.

내부에 Attrib라는 배열이 있고 내부에 Attrib라는 배열이있는 current라는 이름의 배열의 경우 26 번 위치를 지정하려면 다음과 같이 표시됩니다.

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

오프셋을 사용할 수도 있습니다

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

"다음"25 개 요소가 표시됩니다. (VS2008을 사용하고 있으며 최대 25 요소 만 표시합니다).

0
wog