我们正在尝试为特定环境实现定制的 gdb 工具。我们有 Linux-Centos 操作系统。
尝试通过一些定制来实现 gdb 功能。我们的工具将附加到 PID(已经运行的进程),它将启动调试 session 。我们希望读取符号信息(符号表)并打印尽可能多的符号信息(主要是数据类型、地址和大小)。
我们可以使用 readelf,gdb 中的文件命令读取符号表,并且可以打印一些与局部/全局变量相关的信息。但是我们无法找到打印变量地址和大小的确切命令。
最佳答案
您可以在 gdb 的表达式中使用 ptype 命令和 sizeof:
(gdb) ptype exit
type = int ()
(gdb) print sizeof(argc)
$1 = 4
这当然需要调试信息,而不仅仅是符号表可用,例如对于 ELF,这需要 .debug_{aranges,info,abbrev,...} 部分,而不仅仅是 .shstrtab、.symtab,和 .strtab。
关于c - 从符号表中读取变量的类型、地址、大小。这是使用 gnu 工具(如 gmake 或 gcc)构建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122159/