![]() |
1
28
这意味着该变量的类型没有完全指定。例如:
GDB知道
要打印该值,可以将其强制转换为兼容的类型。
例如,如果你知道
或者,您可以将其打印为通用指针,或者将其视为整数:
另请参见GDB手册的以下页面: |
![]() |
2
5
我发现的是,如果反汇编使用不完整结构类型gdb的函数,则“发现”结构成员,然后可以显示它们。例如,假设您有一个字符串结构:
通过指针创建和获取字符串的一些函数:
以及创建字符串的测试:
在gdb中运行它并尝试“print*str”,您将得到一个“不完整的类型”响应。但是,尝试“disassemble get_string”然后“print*str”,它将正确显示结构和值。我不知道为什么会这样,但确实如此。 |
![]() |
3
0
我也有同样的问题。如果手动从库中加载符号:
您需要使用相同的命令从声明此对象的库中加载符号。 |
![]() |
4
0
我不知道错误的全部含义,但是正如Peter所指出的,相关方法的反汇编可以使一些类型定义可用。 我的例子: 在类的.h中,该类包含一个内部助手类的前向声明,以便外部类可以包含指向它的指针。相应的.cpp具有完整的内部助手类定义。 在中断外部类的方法时,gdb报告通过外部类的实例取消对内部类实例的指针引用的类型不完整。 对外部类中的一个方法发出disassemble命令允许gdb使用以前失败的相同指针了解内部类的结构。 |