2013-10-30 2 views
1

컨텍스트의 경우, 특별한 경우는 다음과 같습니다. segfault가 있고 코어를 분석하고 있습니다. 스택 트레이스는 exit라고 불리는 프로그램을 보여 주지만 그것을 완료하기 전에 어떤 벡터의 내부에서 추락합니다; 벡터의 주소를 얻을 수는 있지만 코드에 익숙하지 않아 어떤 변수에 해당하는지 알지 못합니다. 관련 코드를 검사하기 위해 어떤 변수가이 벡터를 가리키고 있는지 알고 싶습니다. 어떤 제안?gdb에서 주소를 가리키는 모든 변수를 찾으십시오.

+0

운영 체제가 적합한 경우 : valgrind를 시도하십시오. –

+0

"변수가이 벡터를 가리키고 있습니다"라는 의미는 무엇입니까? 벡터 객체 주소를 저장하는 포인터 변수를 의미합니까? –

+0

@AlexeyTeplyakov : 현재 값이 벡터 인 C++ 변수입니다. – ricab

답변

3

내가 벡터의 주소를 얻을 수 있습니다 작성합니다 벡터

사용할 수있는 변수의 주소가 있습니다. info symbol 명령은 다음과 같은 변수의 이름을 인쇄 :

(gdb) info symbol 0x4005BDC 

은 GDB 문서에 Examining the Symbol Table를 참조하십시오.

0

충돌 직전에 중단 점을 만들어 std :: vector 내의 모든 변수를 인쇄 할 수 있습니다.

예를 들어
print *(your_vector._M_impl._M_start)@your_vector.size() 

: std::vector<int> vec(3);

당신은 내가 변수이 가리키는있는 것을 발견하고 싶습니다 ... print *(vec._M_impl._M_start)@3

관련 문제