首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GDB中使用` `maint info symtabs`打印的结果?

问如何在GDB中使用` `maint info symtabs`打印的结果?
EN

Stack Overflow用户
提问于 2021-09-20 16:42:15
回答 1查看 46关注 0票数 0

当我键入命令maint info symtabs时,我得到以下输出:

代码语言:javascript
复制
{ objfile /home/jokoi/NOTE/Linux/MEMORY/c_file/testalloc ((struct objfile *) 0x563c7d6a9320)
  { ((struct compunit_symtab *) 0x563c7d703da0)
    debugformat DWARF 2
    producer GNU C17 9.3.0 -mtune=generic -march=x86-64 -g -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection -fcf-protection
    dirname /home/jokoi/NOTE/Linux/MEMORY/c_file
    blockvector ((struct blockvector *) 0x563c7d7523d0)
    { symtab testalloc.c ((struct symtab *) 0x563c7d703e20)
      fullname /home/jokoi/NOTE/Linux/MEMORY/c_file/testalloc.c
      linetable ((struct linetable *) 0x563c7d752400)
    }
    { symtab /usr/lib/gcc/x86_64-linux-gnu/9/include/stddef.h ((struct symtab *) 0x563c7d703e50)
      fullname (null)
      linetable ((struct linetable *) 0x0)
    }
    { symtab /usr/include/x86_64-linux-gnu/bits/types.h ((struct symtab *) 0x563c7d703e80)
      fullname (null)
      linetable ((struct linetable *) 0x0)
    }
    { symtab /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h ((struct symtab *) 0x563c7d703eb0)
      fullname (null)
      linetable ((struct linetable *) 0x0)
    }
......
}

以0x563c7d7开头的地址是什么意思。

当我试着检查它的时候,我被告知Cannot access memory at address 0x563c7dc94330

谁能告诉我如何使用这个地址来检查我的GDB中的symtab结构?

EN

回答 1

Stack Overflow用户

发布于 2021-09-21 02:39:43

谁能告诉我如何使用这个地址来检查我的GDB中的symtab结构?

maint命令集是为GDB维护者(即维护或调试GDB本身的人)准备的。

打印的地址是GDB进程中的地址,它们与下级进程(由GDB调试的进程)没有任何关系。

当我试着检查它的时候,我被告知Cannot access memory at address 0x563c7dc94330。

examines命令检查下级进程中的地址。maint info中的地址是GDB进程本身中的地址。要检查该地址,可以将GDB附加到GDB进程。也就是说,进程层次结构是: GDB (A) debugs GDB (B),它调试您的testalloc进程(C)。在(B)中,您可以发出maint info命令,然后使用(A)检查(B)中的symtab内容。

我建议将(A)和(B)放在不同的终端中,以便更清楚地了解您正在与哪个GDB副本交互。

更新:

我如何导入"struct symtab",我只能检查十六进制格式的内存区域。

通常,开发人员构建一个带有调试信息的gdb版本(这是./configure && make的默认版本),并调试该版本。

在不重新构建整个GDB的情况下“导入”struct symtab的定义是possible,但这会使已经很复杂的调试过程复杂化,所以我不建议这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69258071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档