共被编辑 2 次

版本 更新时间 贡献者 编辑原因 操作
#r2 2018-07-28 sumas15 添加代码 | 修正错别字及语法 查看

gdb调试打印的变量内容和程序运行输出内容不一致

题目描述

基类socketBase, 派生类TcpSocket,函数fun调用中,派生类的this指针传递给以基类socketBase指针为参数的函数,在函数里类型转换为TcpSocket,但是发现TcpSocket里面的成员都置为0,而基类里面的成员正确。
用gdb进行调试,但是在调试工具里面,fun里面TcpSocket类里面自身的变量内容正常,但是程序实际运行打印出来的变量内容却是0不知道什么原因。。。

图片如下:
gdb调试:

(gdb) p tcpSocket->m_bConnected
$2 = true
(gdb) p tcpSocket->m_uid
$3 = 12
(gdb) p tcpSocket->m_iLastRecvTime
$4 = 1532751659

程序运行打印:

TrackerMgr::onClose m_bConnected 0, uid 0, lasttime 0.

思路:
基本可以确定类型转换没有问题,调试工具里面也看到成员变量访问没有问题,实在不知道什么原因,求解答。

#r1 2018-07-28 sumas15 创建问题 查看

gdb调试打印的变量内容和程序运行输出内容不一致

题目描述

基类socketBase, 派生类TcpSocket,函数fun调用中,派生类的this指针传递给以基类socketBase指针为参数的函数,在函数里类型转换为TcpSocket,但是发现TcpSocket里面的成员都置为0,而基类里面的成员正确。
用gdb进行调试,但是在调试工具里面,fun里面TcpSocket类里面自身的变量内容正常,但是程序实际运行打印出来的变量内容却是0不知道什么原因。。。

图片如下:
gdb调试:
clipboard.png

程序运行打印:
clipboard.png

思路:
基本可以确定类型转换没有问题,调试工具里面也看到成员变量访问没有问题,实在不知道什么原因,求解答。