2012-05-30 4 views
4

안녕하세요, 저는 현재 GDB를 통해 리눅스 머신의 코드베이스를 디버깅하고 있습니다. 현재 클래스의 개체 ptr에서 데이터 멤버의 가치를 얻는 데 문제가 있습니다. 객체 ptr의 위치를 ​​인쇄하려면 "p"(인쇄) 또는 "표시"명령을 사용할 수 있습니다.gdb에서 데이터 멤버의 가치를 얻는 방법은 무엇입니까?

예를 들어

: 나는이 내 코드에 따라서이

class abc 
{ 
    string a; 
}; 

같은 클래스 난 그렇게 위의 줄에 허점이 후,

abc* objPtr = new abc(); 

을 클래스 abc 방송에 대한 포인터를 사용하고있는 경우 내가 얻을 것이다 objPtr 이제 datamember a (abc :: a) 값의 값을 확인하려고합니다. 내가 어떻게 할 수 있니?

(gdb) p objPtr 
$2 = {px = 0x3ba6430690, pn = {pi_ = 0x3ba6430698}} 

또한 목록/벡터 인 데이터 멤버를 확인하는 다른 방법이 있습니까?

+0

-g로 컴파일 했습니까? – ColWhi

+0

예 -g 옵션으로 컴파일했습니다. \ –

+0

목록/벡터 질문에 대해서는 다음을보십시오. http://stackoverflow.com/questions/427589/inspecting-standard-container-stdmap-contents-with-gdb – Nobody

답변

0

당신이 시도 할 수 :

$ p abc->c_str() 
+0

을 놓쳤습니다. 인스턴스 대신에'a'를 사용하고 타입을 사용했습니다 :'objPtr -> a.c_str(); ' – Nobody

+0

abc 클래스의 datamember 인 목록을 확인하고 싶습니다. –

+0

또한 시도 할 수 있습니다 p * objPtr – ColWhi

관련 문제