source

Visual Studio 디버거에서 동적으로 할당된 어레이를 표시하는 방법

factcode 2022. 8. 12. 23:18
반응형

Visual Studio 디버거에서 동적으로 할당된 어레이를 표시하는 방법

정적으로 할당된 배열이 있는 경우 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 창(디버깅/Windows/Watch)을 사용하는 것입니다.시계 추가 =

m4x4,16

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

여기에 이미지 설명 입력

다른 방법은 메모리 창(디버깅/Windows/메모리)을 사용하는 것입니다.메모리 시작 주소 = 지정

m4x4

이렇게 하면 데이터가 테이블에 표시되므로 2차원 및 3차원 행렬에 적합합니다.

여기에 이미지 설명 입력

메모리 창을 오른쪽 클릭하여 바이너리 데이터의 표시 방법을 확인합니다.선택할 수 있는 것은 정수, 플로트 및 일부 텍스트 인코딩으로 제한됩니다.

워치 창에서 어레이 이름과 표시할 항목의 양 뒤에 쉼표를 추가합니다.

위해서,

int **a; //row x col

이것을 손목시계에 추가하다

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

이 문서에는 워치창에서 변수로 수행할 수 있는 많은 작업 목록이 있습니다.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)

재방문:

아래 포인터가 있다고 가정합니다.

double ** a; // assume 5*10

Visual Studio 디버깅 워치에 다음과 같이 쓸 수 있습니다.

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

아래와 같이 배열되어 모든 콘텐츠를 한 번에 볼 수 있습니다.

double[5][10] a;

또 다른 방법은 여기 MSDN에서 지정되어 있습니다.

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

char *a = new char[10];

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

a,su

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

MFC 어레이(CARay, CStringArray 등)의 경우 힌트 #4의 다음 링크에 따릅니다.

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

예를 들어 "CARay pArray"의 경우 Watch 창에 추가합니다.

     pArray.m_pData,5 

를 참조해 주세요.

pArray가 2차원 CArray인 경우 다음 구문을 사용하여 두 번째 차원의 요소를 확인할 수 있습니다.

     pArray.m_pData[x].m_pData,y

다차원 배열에서 사용할 방법을 찾지 못했습니다.그러나 원하는 항목의 인덱스를 알고 있는 경우 적어도 특정 값에 워치를 추가할 수 있습니다.인덱스 연산자를 사용하면 됩니다.

Attribute라는 이름의 어레이가 내부에 있고 Attribute라는 이름의 어레이가 내부에 있는 current라는 이름의 어레이의 경우 26을 배치해야 할 경우 다음과 같이 됩니다.

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

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

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

에는 25개의 요소가 표시됩니다.(VS2008을 사용하고 있는데 최대 25개의 요소만 표시됩니다).

언급URL : https://stackoverflow.com/questions/75180/how-to-display-a-dynamically-allocated-array-in-the-visual-studio-debugger

반응형