- 1. ps -ef|grep -E "PID|xxx" 获取进程号,xxx为可执行的进程,例如获取到的进程号1234
- 2. gcore 1234 得到core.1234文件
- 3. gdb /home/admin/bin/xxx core.1234 进入gdb环境,xxx为可执行程序,对应1的进程
- 4. source test.gdb 引入外部编写的gdb脚本,test.gdb脚本内容例
define dump_connection set $i=0 while $i < 1000 if ngx_cycle->connections[$i].sockaddr != 0 if((struct sockaddr_in*)ngx_cycle->connections[$i].sockaddr)->sin_port == 0x9007 print $i set $s =(ngx_rtmp_session_t*)ngx_cycle->connections[$i]->data print $s end end set $i=$i+1 end end
讯享网
其中0x9007 即 790端口,为十进制的1936端口
- 5. 执行dump_connection
- 6. 找到变量打印,p *$18->port 或者p/x $18显示内存的值,其中x/10xb 十六进制表示10个连续字节 x/235c表示表示235个字符,等等。
- 7. 排查问题
bt 看看堆栈
data -d @ 看看时间戳
info symbol 0x008f625c 看该内存对应的函数
dmesg -T 看看硬件设备
cat /var/log/mcelog 看看系统信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42890.html