C 코드 디버깅에는 데이터 구조의 내용을 검사하는 작업이 포함될 수 있습니다. 이는 C 벡터와 같은 복잡한 구조를 다룰 때 특히 어렵습니다. 이 문제를 해결하기 위해 이 기사에서는 std::Vector
먼저 벡터 요소를 저장하는 내부 배열에 대한 포인터를 식별합니다. GCC 4.1.2에서 이 포인터는 myVector._M_impl._M_start 표현식을 통해 액세스할 수 있습니다.
전체 벡터를 인쇄하려면 다음 GDB 명령을 사용합니다.
print *(myVector._M_impl._M_start)@myVector.size()
이 명령은 myVector._M_impl._M_start 주소에서 시작하여 myVector.size() 요소에 대해 계속되는 벡터 요소.
벡터의 처음 N 요소만 인쇄하려면 다음과 같이 명령을 수정하세요.
print *(myVector._M_impl._M_start)@N
이 명령은 벡터의 첫 번째 N 요소를 인쇄합니다.
설명:
이 명령은 벡터가 구현되는 방식을 활용하기 때문에 작동합니다. GCC 4.1.2에서. 내부 배열은 벡터의 _M_impl._M_start 필드에 저장되며 GDB의 print P@N 명령을 사용하면 포인터 P에서 시작하는 배열의 N 요소를 인쇄할 수 있습니다.
바로가기:
GDB 초기화 파일(.gdbinit)에 바로가기를 만들어 디버깅 프로세스를 단순화할 수도 있습니다. .gdbinit 파일에 다음 줄을 추가하세요.
define p P@N
이렇게 하면 print P@N 명령에 대한 별칭이 생성되어 p를 사용하여 배열 요소를 더 편리하게 인쇄할 수 있습니다.
위 내용은 GDB에서 C `std::벡터`의 내용을 인쇄하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!