Programing

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

lottogame 2020. 6. 16. 21:59
반응형

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

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

m4x4,16

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

여기에 이미지 설명을 입력하십시오

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

m4x4

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

여기에 이미지 설명을 입력하십시오

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


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


재 방문 :

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

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];

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

a,su

See the tables on the MSDN page for all of the different conversions possible since there are quite a few. Many different string variants, variants to print individual items in the array, etc.


For MFC arrays (CArray, CStringArray, ...) following the next link in its Tip #4

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

For example for "CArray pArray", add in the Watch windows

     pArray.m_pData,5 

to see the first 5 elements .

If pArray is a two dimensional CArray you can look at any of the elements of the second dimension using the next syntax:

     pArray.m_pData[x].m_pData,y

You can find a list of many things you can do with variables in the watch window in this gem in the docs: https://msdn.microsoft.com/en-us/library/75w45ekt.aspx

For a variable a, there are the things already mentioned in other answers like

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)

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

내부에 Attrib라는 배열이 있고 내부에 Attrib라는 배열이있는 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

반응형