在linux下运行的C++程序在运行过程中出现错误时会生成core文件,通过core文件可以对错误进行查找:
1、查看出错点
gdb -c core.6662 ql_connect_svr
bt //查看出错函数堆栈
frame 3 切换栈,其中3是出错栈编号
l 6365 —list缩写,6365是行号,显示6365行程序周围的代码;
p pMsg->m_srcuid —print缩写;查看变量值
p ((CChatMsgSend*)pInMsg)->m_dwFromUid
p ((CChatMsgSend*)pInMsg)->m_sendtime
p ((CChatMsgSend*)pInMsg)->m_dwObjType
查看类所有内容
p (*(CChatMsgSend*)pInMsg)
p ((MsgText*)(*(CChatMsgSend*)pInMsg).m_MsgObjBase)->msg
break 16
break func
info break 查看断点
r 运行程序
n 执行下条程序
gdb -c core.12446 yq_msg_server
info threads
thread 1
bt
f0
2、设置断点,单步调试
break CChatMsgSend.cpp:156
break CChatMsgSend.cpp:160
set args -id 10000 -tcp 127.0.0.1:8200 -svr 127.0.0.1:8300
r
[Thread debugging using libthread_db enabled]
Detaching after fork from child process 27095.
另开一个调试窗口:
gdb yq_connect_svr 27095
c
p (*(CChatMsgSend*)pInMsg)
n
n