给定一个指针,gdb如何获得它的类型?

时间:2011-05-26 01:55:19

标签: c gdb

gdb如何知道指针指向intstruct或任何其他数据类型?

3 个答案:

答案 0 :(得分:5)

来自:Examining the Symbol Table

  

whatis expr

     

打印表达式expr的数据类型。 expr实际上没有被评估,并且它内部的任何副作用操作(例如赋值或函数调用)都不会发生。见表达式部分。


  

ptype expr

     

p型

     

打印表达式expr类型的描述。 ptype与whatis的不同之处在于打印详细说明,而不仅仅是类型的名称。例如,对于此变量声明:

struct complex {double real; double imag;} v;

这两个命令给出了这个输出:

(gdb) whatis v
 type = struct complex
(gdb) ptype v
 type = struct complex {
    double real;
    double imag;
 }

答案 1 :(得分:4)

gdb无法知道,除非指针来自可以确定类型的变量或表达式。

如果gdb被赋予0x4567789,它不知道那可能指向什么。但是如果int * p具有该值,gdb可以遵循该值并为您提供该地址包含的内容。

答案 2 :(得分:1)

gdb通过读取使用调试选项(-g)编译时嵌入在可执行文件中的调试信息(也就是符号表),知道代码中指针变量的类型。