其他分享
首页 > 其他分享> > gdb 如何指定脚本执行

gdb 如何指定脚本执行

作者:互联网

背景

有些分析core的场景,需要避免收到执行 gdb 命令,自动gdb 出堆栈然后分析输出的内容。怎么办?

示例

[root@qd /home/ebs/dataserver]$ cat gd.gdb
thread 15
bt
set print elements 0
p *(kunlun::dataserver::BlockManager*)(g_server->b_manager_)
p *(kunlun::dataserver::StoreManager*)(g_server->s_manager_)

 gdb -q --batch -x gd.gdb ./bin/server 4984  2>&1 | tee -a 4984_mygdb.output

然后参考下面的命令解析堆栈, 如果堆栈里有vector 打印出来的话:

cat mygdb.output  | awk -F"]" '{print $1}' | awk -F"[" '{print $2}' | sort >> sm.list

注意上面用到了下面的gdb脚本:

https://github.com/mzlogin/config-files/blob/master/.gdbinit

标签:脚本,dataserver,指定,server,堆栈,gdb,gd,print
来源: https://blog.51cto.com/xiamachao/2802387