programing

구조체에 GDB에 있는 필드를 표시하려면 어떻게 해야 합니까?

itsource 2022. 7. 26. 22:57
반응형

구조체에 GDB에 있는 필드를 표시하려면 어떻게 해야 합니까?

우연히 어떤 구조물을 발견했다.ngx_http_variable_value_tGDB(디버거) 세션에서 콘솔 내에 있는 필드를 인쇄합니다.

가능할까요?

GDB 명령어를 사용할 수 있습니다.ptype구조 또는 클래스의 정의를 인쇄합니다.

추가 정보:ptype /o구조(예: 파홀)에 있는 모든 필드의 간격띄우기 및 크기를 인쇄합니다.

set print pretty on

또한 이 옵션은 새 줄과 들여쓰기를 제공합니다.p *my_struct_pointer.

어떤 것이 좋습니까?

$2 = {path = {mnt = 0xffff8800070ce1a0, dentry = 0xffff880006850600},last = {{{hash = 3537271320, len = 2}, hash_len = 12127205912}, name = 0xffff88000659501c "../b.out"}

또는 다음과 같이 입력합니다.

$3 = {
  path = {
    mnt = 0xffff8800070ce1a0, 
    dentry = 0xffff880006850600
  }, 
  last = {
    {
      {
        hash = 3537271320, 
        len = 2
      }, 
      hash_len = 12127205912
    }, 
    name = 0xffff88000659501c "../b.out"
  },
}

디버깅 기호가 내장된 경우 다음 값만 출력할 수 있습니다.print variable또는print *variable그게 구조물에 대한 포인터라면요

  p *((struct my_struct*) variable)

gdb 구조 상세 인쇄에 도움이 됩니다.

명령줄 옵션뿐만 아니라 그래픽 디버거도 사용할 수 있습니다.gdbgui를 추천합니다만, 꽤 많이 있습니다.

스크린샷

면책사항:저는 gdbgui 개발자입니다.

Data Display Debugger를 보고 싶습니다.

gdb의 경우 그래픽 프런트 엔드를 통해서만 이 작업을 수행했습니다.gdb 온라인 문서에서 이 엔트리를 찾았습니다.도움이 됐으면 좋겠다.이를 위해서는 디버깅 정보를 포함한 코드가 생성되어야 한다고 생각합니다.

ptype [ ptype ]ptype은 whatis와 같은 인수를 받아들이지만 유형 이름뿐만 아니라 유형에 대한 자세한 설명을 출력합니다.

GDB에 의한 디버깅: 심볼

언급URL : https://stackoverflow.com/questions/1768620/how-do-i-show-what-fields-a-struct-has-in-gdb

반응형