경우에 따라 일부 유형의 변수에 대해 gdb가 "incomplete type"을 인쇄하는 경우가 있습니다. 이것이 의미하는 바는 무엇이며 어떻게 그 가치를 볼 수 있습니까?gdb에서 <incomplete type> 변수를 인쇄하는 방법
답변
해당 변수의 유형이 불완전하게 지정되었음을 의미합니다. 예를 들어 :
struct hatstand;
struct hatstand *foo;
GDB는 foo
가 hatstand
구조에 대한 포인터는 것을 알고 있지만, 그 구조체의 멤버가 정의되지 않았습니다. 따라서 "불완전 유형".
값을 인쇄하려면 호환 가능한 유형으로 변환 할 수 있습니다. 이 정수 인 것처럼 일반적인 포인터로 인쇄하거나 취급 할 수,
print (struct lampshade *)foo
또는 : 당신이 foo
정말 lampshade
구조에 대한 포인터는 것을 알고있는 경우 예를 들어
,
print (void *)foo
print (int)foo
볼 수있는 GDB 매뉴얼에서 이러한 페이지 :
- 내가 찾은 무엇
struct my_string {
char * _string,
int _size
} ;
일부 기능 포인터를 통해 문자열을 생성하고 얻을 :
int main(int argc, char *argv[]) {
my_string *str = create_string("Hello World!") ;
printf("String value: %s\n", get_string(str)) ;
...
}
: 문자열을 생성
my_string * create_string(const char *) {...}
const char * get_string(my_string *){...}
및 테스트를 예를 들어, 문자열 구조체가 있다고 gdb에서 실행하고 'print * str'을 시도하면 '불완전한 유형'응답을 받게됩니다. 그러나 'get_string'을 분해 한 다음 'print * str'을 시도하면 구조체와 값이 올바르게 표시됩니다. 왜이 방법이 효과가 있는지 모르겠지만 그렇습니다.
동일한 문제가있었습니다. 수동으로 라이브러리에서 기호를로드하는 경우 :
set auto-solib-add off
attach thread_id
shared any_lib
shared another_lib
당신은이 객체뿐만 아니라 같은 명령으로 선언 된 라이브러리에서 기호를로드해야합니다.
필자는 오류의 모든 의미를 모르지만 Peter가 지적한 것처럼 관련 메서드를 디스 어셈블리하면 이러한 형식 정의 중 일부를 사용할 수 있습니다.
내 예 : 외부 클래스가에 대한 포인터를 포함 할 수 있도록 클래스의 .H에서는, 그 클래스는 내부 헬퍼 클래스의 전방 선언을 포함. 해당 .cpp는 전체 내부 도우미 클래스 정의를가집니다.
외부 클래스의 메서드를 중단하면 gdb가 외부 클래스의 인스턴스를 통해 내부 클래스 인스턴스에 대한 포인터를 역 참조하기 위해 불완전한 형식을보고했습니다.
외부 클래스의 메소드 중 하나에서 disasemble 명령을 실행하면 gdb가 이전에 실패한 포인터와 동일한 포인터를 사용하여 내부 클래스의 구조를 이해할 수있었습니다.
- 1. gdb에서 wstring을 인쇄하는 방법
- 2. Xcode에서 변수를 인쇄하는 방법
- 3. gdb에서 Java 배열을 인쇄하는 방법은 무엇입니까?
- 4. 변수를 텍스트 상자에 인쇄하는 방법
- 5. 문자열 중간에 R 변수를 인쇄하는 방법
- 6. 개체 변수를 인쇄하는 방법은 무엇입니까?
- 7. GDB에서
- 8. UILable Text incomplete
- 9. GDB에서 전역 주소를 얻는 방법
- 10. gdb에서 이것은 무엇을 의미합니까?
- 11. 테이블에 Javascript 변수를 인쇄하는 방법은 무엇입니까?
- 12. 역 바이트 순서로 변수를 인쇄하는 방법은 무엇입니까?
- 13. MongoDB 명령 프롬프트에서 변수를 인쇄하는 방법은 무엇입니까?
- 14. Double/incomplete 매개 변수 URL 인코딩
- 15. C에서 인쇄하는 방법
- 16. 팝업 창만 인쇄하는 방법
- 17. Wpf에서 미리보기를 인쇄하는 방법?
- 18. 브라우저에서 PDF를 인쇄하는 방법
- 19. 행렬을 인쇄하는 방법 R
- 20. TreeView를 인쇄하는 방법?
- 21. .MSG를 PDF로 인쇄하는 방법
- 22. jpg로 문서를 인쇄하는 방법
- 23. 멋지게 인쇄하는 방법?
- 24. gdb에서 입력 리다이렉션 (MinGW)
- 25. GDB에서 루프를 벗어나게하려면 어떻게해야합니까?
- 26. gdb에서 실행 루프 끊기
- 27. gdb에서 프레임 정보에 액세스
- 28. PHP .. 날짜 변수에서만 달을 인쇄하는 방법
- 29. javascript에서 가로로 페이지를 인쇄하는 방법
- 30. tiff 파일을 자동으로 인쇄하는 방법
좋은 답변이지만 링크는 404입니다. –
수정 됨. 이전에 링크 된 내용을 기억할 수는 없지만이 두 링크가 도움이 될 것입니다. :). –