GDB 명령은 버퍼(스택)의 시작 주소를 인쇄합니다.

GDB 명령은 버퍼(스택)의 시작 주소를 인쇄합니다.

GDB 디버거의 경우

(gdb) p &buffer

이 명령은 버퍼(스택)의 시작 위치 내용을 인쇄하는 데 사용됩니까, 아니면 주소를 인쇄하는 데 사용됩니까?

내용이라면 주소를 어떻게 인쇄하나요?

답변1

유형에 따라 다릅니다 buffer.

buffer아마도 버퍼의 시작 부분에 대한 포인터일 가능성이 높습니다 . C 스타일 선언은 struct stackElement *buffer;다음과 같을 수 있습니다(별표 참고!). 이 경우:

  • p &buffer포인터 자체가 저장된 주소(즉, "버퍼 주소의 주소")를 인쇄합니다.
  • p bufferbuffer버퍼의 주소인 포인터 변수의 값이 인쇄되어야 합니다 .
  • p *buffer버퍼의 내용이 인쇄되어야 합니다.

포인터가 아닌 구조체 유형인 경우 buffer(예제 C 선언에는 struct stackElement buffer;별표가 없을 수 있음) 다음을 수행합니다.

  • p &buffer버퍼의 주소인 구조체의 주소를 인쇄합니다.
  • p buffer이 구조의 내용을 인쇄합니다(= 스택인 경우 첫 번째 스택 요소일 수 있음)
  • p *buffer실수입니다.

관련 정보