前言:当前调试代码多通过函数中打印的日志,而日志不可能非常详细,不可能像本地一样断点调试。但是通过gdb可实现在环境上的‘断点调试’。
主要分为三步:在对应的节点上安装gdb、写调试命令、出发微服务。经过这三部分,得到的对应行参数的值;通过分析该值结果,该值的获取有问题,快速定位出问题。
首先,在服务所在的OM节点上安装gdb。先将gdb安装程序拷贝到该节点的home/cspexpert目录下。然后,在xshell下的该目录执行命令:
rpm -ivh gdb安装程序名。完成gdb的安装。
然后,在服务所在的节点利用命令:ps –ef | grep (对应服务名),查看服务进程号。
gdb问题跟踪实例:
gcc -g -o main.c main
gdb main
//进入gdb调试模式,输入quit退出
run
backtrace(编译时加入-g选项可以显示问题代码具体行数)
进程挂掉,生成core文件:
ulimit -c unlimited
gdb ../src/liteSvcA/sma /opt/csp/cspsnmadapt/sbin/core.
bt //打印堆栈信息
./run.sh
gdb attach `pidof sma`
set height 0
set print pretty on
set breakpoint pending on
set follow-fork-mode child
handle SIG35 SIG36 SIGUSR2 noprint nostop
p m_stVFSInfo
b VOS_VFS_Adapt_FsInit
p g_acSSPOuterVer
command
bt
i r
x/30wx &m_stVFSInfo
p m_stVFSInfo
det
q
end
c