Clion 디버거에서 int 배열의 전체 내용을 표시하려면 어떻게 해야 합니까?
현재 어레이의 첫 번째 요소만 표시되지만 어레이의 모든 요소를 시각적으로 보여 주십시오.클라이온은 GDB를 사용하는 것 같아요.
EDIT: 특히 힙상의 어레이를 말합니다.스택상의 어레이를 시각화할 수 있습니다.
유감스럽게도 CLion은 현재 이러한 기능을 지원하지 않습니다.JetBrains 직원이 제안한 대로 해결 방법을 사용할 수 있습니다.[평가 / 워치(Evaluate / Watches)]창에서 다음 식을 사용합니다.
(MyType[128])myArray
임의의 어레이 크기를 사용할 수 있습니다.
어레이가 저장되어 있는 경우void *
변수, 좀 더 까다로운 작업을 수행해야 합니다.
(MyType[128])*(char*)myArray
cubuspl42의 답은 GDB에 적용됩니다. 그러나 Mac에서 LLDB를 디버거로 사용하는 경우 올바른 방법은 다음과 같습니다.
(MyType(*)[128])myArray
이게 도움이 됐으면 좋겠네요!
기본 디버거가 이해하는 구문은 실제로 작동합니다.예를 들어 GDB의 경우,*array@size
,어디에array
임의의 포인터 표현식이 될 수 있습니다.size
에는 임의의 (양수) 정수식을 사용할 수 있으며, 변수, 함수 호출, 레지스터, GDB가 인식하는 모든 것을 포함할 수 있습니다.예를 들어 다음과 같은 것이 유효합니다.
*((int*)$rsp - 0x100)@get_size(data)
오늘도 같은 문제가 있었습니다만, 그 대신에 여러가지 힌트를 얻을 수 있었습니다.
pthread_t** pthreads = (pthread_t**) malloc(//malloc args)
thread_count = 0;
while(thread_count < 10) {
pthread_t* myThread = (pthread_t*) malloc(//malloc args)
pthreads[thread_count] = myThread;
thread_count++;
}
CLion gdb에서 포인터에 대한 포인터를 보고 있기 때문에 이 메모리의 할당을 확인할 수 없었습니다.
이 문제를 해결하려면 어레이의 첫 번째 요소(pthreads[0])를 대상으로 하고 다음 요소를 조사합니다.n
거기서부터의 요소들.
이를 수행하려면 유형(pthread_t*[])을 캐스팅한 후 타깃 메모리(pthreads[0])(첫 번째 요소)를 사용해야 합니다.
주의: 사용하였습니다.calloc
0으로 설정하다pthreads
이 사진은 CLion 디버거의 위치 0에서 메모리가 올바르게 할당된 방법을 보여 줍니다.
위의 게시물 중 제가 여기에 글을 썼다는 결론에 이르지 못했기 때문에 이 게시물을 작성하게 되었습니다.
예:
템플릿 및 참조를 사용할 수 있습니다.
template<int N>
void foo1(int (&arr)[N])
{
...
}
어레이를 다른 함수에 전달하려면 전달된 함수에서도 어레이에 템플릿과 참조를 사용해야 합니다.
template<int N>
void foo2(int (&arr)[N])
{
...
}
template<int N>
void foo1(int (&arr)[N])
{
foo2(arr);
}
이 메서드를 사용하면 int 배열의 전체 내용을 클론으로 볼 수 있습니다.
언급URL : https://stackoverflow.com/questions/40327089/in-clions-debugger-how-do-i-show-the-entire-contents-of-an-int-array
'programing' 카테고리의 다른 글
mockito를 사용하여 개체 속성 값 확인 (0) | 2022.05.28 |
---|---|
라벨 뒤에 초기화되는 변수가 있는 경우 "라벨은 스테이트먼트의 일부만 될 수 있고 선언은 스테이트먼트가 아닙니다"라고 표시되는 이유는 무엇입니까? (0) | 2022.05.28 |
Apollo Client를 사용하여 상태 업데이트 (0) | 2022.05.28 |
기본값을 옵션 선택 메뉴로 설정 (0) | 2022.05.28 |
Vue 스크롤 div to top inside 메서드 (0) | 2022.05.28 |