구조체에 GDB에 있는 필드를 표시하려면 어떻게 해야 합니까?
우연히 어떤 구조물을 발견했다.ngx_http_variable_value_t
GDB(디버거) 세션에서 콘솔 내에 있는 필드를 인쇄합니다.
가능할까요?
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와 같은 인수를 받아들이지만 유형 이름뿐만 아니라 유형에 대한 자세한 설명을 출력합니다.
언급URL : https://stackoverflow.com/questions/1768620/how-do-i-show-what-fields-a-struct-has-in-gdb
'programing' 카테고리의 다른 글
숫자 0 형식 지정 방법..9: 2자리 숫자로 표시(날짜 아님) (0) | 2022.07.26 |
---|---|
C에서 32비트 정수를 선언하는 방법 (0) | 2022.07.26 |
명명된 경로에 대한 매개 변수가 없습니다."x"가 정의되어야 합니다. (0) | 2022.07.26 |
stdout과 STDOUT_FILENO의 차이점 (0) | 2022.07.21 |
Vuex에서 Vue 라우터 파라미터를 취득하는 방법 (0) | 2022.07.21 |