亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

gdb調試打印的變量內容和程序運行輸出內容不一致

gdb調試打印的變量內容和程序運行輸出內容不一致

C++
千巷貓影 2018-09-03 07:53:23
題目描述基類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程序運行打?。篢rackerMgr::onClose m_bConnected 0, uid 0, lasttime 0.思路:基本可以確定類型轉換沒有問題,調試工具里面也看到成員變量訪問沒有問題,實在不知道什么原因,求解答。
查看完整描述

1 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

從調試工具比如gdb那拿到的結果有時不能保證是正確的。至于這到底是為什么,這也許是gdb的問題,在深入的話我也不了解了(如果有人知道的話,還請在評論區指教)。這也是為什么有的時候用IDE的單步跟蹤查看變量值可能是不正確的。

如果打log的話,就可以保證完全正確了。


查看完整回答
反對 回復 2018-09-03
  • 1 回答
  • 0 關注
  • 1277 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號