在gdb中如何打印对象的实际值而非内存地址
GDB打印指针对象实际值的操作方法
你目前打印的inputInfo是指针类型,GDB默认打印指针时只会输出其存储的内存地址,要查看指向的SObjectRecInput对象的实际内容,按以下操作即可:
- 直接解引用指针打印全部内容:执行命令
print *inputInfo,GDB会根据类型定义输出对象所有成员的取值 - 如果想要更易读的格式化输出,可以先执行
set print pretty on,再执行print *inputInfo,输出会自动按成员分行、嵌套结构自动缩进,可读性更强 - 如果只需要查看单个成员的取值,不需要完全解引用,直接执行
print inputInfo->[成员名]即可,比如要查成员height就执行print inputInfo->height
如果执行以上操作后GDB依然无法识别类型、无法打印成员,要确认你编译目标程序时是否添加了-g编译参数,没有携带调试符号的情况下GDB无法解析结构体的成员定义,无法打印完整对象内容。
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

