2012-05-01 2 views
3

gdb에서 내 프로그램의 코어 덤프 (부검)를 디버깅하고 있습니다. 나는 다음과 같이 열었습니다 : gdb [program_name] [core_name]GDB C++ - 코어 덤프를 볼 때 STL 컨테이너 검사?

그러나 STL 벡터를 검사하려고 시도했습니다. 인쇄 vec-> 크기() 또는 (0)

내가 오류를 얻을에서 인쇄 vec->

"당신은 과정없이 디버깅하는 것을 할 수 없다"

저는이 컨테이너의 내용과 크기를 검사하려고하고 있습니다. 코어 덤프 gdb 검사에 더미 프로세스를 추가 할 수있는 방법이 있습니까?

+2

gdb의 어떤 버전을 사용하고 있습니까? 버전에 따라 메모리를 처리하고 사람이 읽을 수있는 컨테이너의 프리젠 테이션을 생성하는 STL 예쁜 프린터를 검색 할 수 있습니다. http://sourceware.org/gdb/wiki/STLSupport –

+2

사후 부득이한 디버깅을 할 수없는 기능을 호출하려고합니다. 대신 벡터 메모리를 검사하십시오. – Benj

답변

2

인쇄 벡터 :

(gdb) print *vec 

그런 다음 구현의 벡터의 내부를 숙지하고 원시 버퍼를 인쇄 할 수 있습니다. 흔히 "_M_buffer"또는 이와 비슷한 것으로 불립니다. 어떻게 수행되었는지에 따라 버퍼가 내부에있는 개체가있을 수 있습니다.

관련 문제