from build-server, copy symbol file:
scp /root/contrail/RPMS/x86_64/contrail-debuginfo-5.1.0-073120190536.el7.x86_64.rpm compute_node:/root
on compute node:
docker cp contrail-debuginfo-5.1.0-073120190536.el7.x86_64.rpm vrouter_vrouter-agent_1:/
go to container:
docker exec -it vrouter_vrouter-agent_1 bash
install:
#debuginfo-install contrail-debuginfo-5.1.0-073120190536.el7.x86_64.rpm
yum localinstall contrail-debuginfo-5.1
attach gdb to process:
ps -ef|grep vrouter
root 10312 10031 4 15:01 pts/0 00:01:15 /usr/bin/contrail-vrouter-agent
gdb -p 10312
load symbol file:
symbol-file /usr/lib/debug/usr/bin/contrail-vrouter-agent.debug
####
dump:
进入容器:/var/crashes/core.contrail-vroute.43845.compute1.1564653277
(vrouter container)gdb /usr/bin/contrail-vrouter-agent core.contrail-vrouter.xxx
bt
bt full
############
list | l | 显示多行源代码 |
break | b | 设置断点,程序运行到断点的位置会停下来 |
info | i | 描述程序的状态 |
run | r | 开始运行程序 |
display | disp | 跟踪查看某个变量,每次停下来都显示它的值 |
step | s | 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句 |
next | n | 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句) |
| p | 打印内部变量值 |
continue | c | 继续程序的运行,直到遇到下一个断点 |
set var name=v |
| 设置变量的值 |
start | st | 开始执行程序,在main函数的第一条语句前面停下来 |
file |
| 装入需要调试的程序 |
kill | k | 终止正在调试的程序 |
watch |
| 监视变量值的变化 |
backtrace | bt | 产看函数调用信息(堆栈) |
frame | f | 查看栈帧 |
quit | q | 退出GDB环境 |
xmpp debug:
tcpdump -i enp2s0f0 port 5269 -vne -w cp2.cap