12-----关于调试SRS和follow-fork-mode,detach-on-fork的说明

1 follow-fork-mode,detach-on-fork

看下面的图表。

follow-fork-modedetach-on-fork说明
parenton只调试主进程( GDB 默认)
childon只调试子进程
parentoff同时调试两个进程, gdb 跟主进程, 子进程 block 在 fork 位置
childoff同时调试两个进程, gdb 跟子进程, 主进程 block 在 fork 位置

2 查看一下进程和线程的信息

//1 查看一下进程和线程的信息
info inferiors;
info threads;

//2 或者切换进程和线程的信息
inferior <infer number>;
thread <thread number>;

//3 查看对应的模式
show follow-fork-mode
show detach-on-fork

3 以调试SRS为例

下面我们以调试SRS为例。注意,调试SRS时,必须将配置默认的守护进程模式关掉,否则会出现deatch xxx种问题,导致无法调试。
在这里插入图片描述

1)gdb ./objs/srs
2)set args -c conf/srs.conf					//gdb时好像必须这样设置配置,否则出错
3)set follow-fork-mode child					//设置默认跟踪子进程,因为我看SRS源码最终使用子进程处理逻辑
4)set detach-on-fork off						//看上面,即开启调试多个进程,并且主进程 block 在 fork 位置
5)  b main
6)b SrsConfig::get_vhost_http_remux_enabled	//这里是SRS读取配置的关键,断点打这样方便观察读配置初始化的流程,SrsConfig::get_vhost_http_remux_enabled可以通过srs.conf的配置节点名搜索找到

在这里插入图片描述

然后按下r运行,方便观察进程和线程的信息。下图可以看到,目前进行和线程各自只有一个,两个模式就是我们刚刚设置的。
在这里插入图片描述

给大家看一下最终的堆栈结果。
在这里插入图片描述

若想继续调试,大家需要自行推流测试。下面简单列出一个推流命令。

ffmpeg -re -rtsp_transport tcp -an -i "rtsp://admin:admin@192.168.1.116/Streaming/Channels/1" 
-vcodec copy -an -f flv "rtmp://127.0.0.1/live/test"
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值