webrtc(m76) tracing学习

本文详细解析了Webrtc中的tracing日志功能,包括其启动方式、配置方法及输出格式。通过C++和Android代码示例展示了如何启用内部tracer模块,并设置日志文件位置。介绍了TRACE_EVENT宏的使用,以及日志实现原理,如事件记录和输出流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webrtc中的日志存在RTC_LOG系列,还存在tracing系列,
今天分析tracing日志功能类,他附加的会打印出, 时间,线程id,进程id。默认情况下不会开启的,只有通过主动开启,才会生效。

c++用法:
#include “rtc_base/event_tracer.h”
// 启动tracer模块,只有执行以后才会进行的打印
rtc::tracing::SetupInternalTracer();
// 设置生成的tracer日志文件的位置
rtc::tracing::StartInternalCapture(“d://1243.txt”);

android用法:
// 设置生成的tracer日志文件的位置
PeerConnectionFactory::startInternalTracingCapture("/sdcard/134.txt")

//一系列的宏定义,
// tag:类型 “webrtc” 可以用于分类
// 输出的参数内容: “VideoReceiveStream::StartNextDecode”
TRACE_EVENT0(“webrtc”, “VideoReceiveStream::StartNextDecode”);

具体的输出格式:
“ph:” 定义的一系列特定标志, 例如上面的 TRACE_EVENT0宏,先输出"B",当日志成功插入到日志输出队列后再输出"E"
TRACE_EVENT0 先插入B 后插入E
TRACE_EVENT_INSTANT0 插入I标志的宏,具体查看trace_event.h ,我没有仔细研究
“ts”: 插入时间点,ms
“pid”: 进程id
“tid”: 线程id

,{ “name”: “VideoReceiveStream::StartNextDecode”, “cat”: “webrtc”, “ph”: “B”, “ts”: 84810757000, “pid”: 1, “tid”: 9136}
,{ “name”: “FrameBuffer::NextFrame”, “cat”: “webrtc”, “ph”: “B”, “ts”: 84810757000, “pid”: 1, “tid”: 9136}
,{ “name”: “FrameBuffer::NextFrame”, “cat”: “webrtc”, “ph”: “E”, “ts”: 84810757000, “pid”: 1, “tid”: 9136}
,{ “name”: “VideoReceiveStream::StartNextDecode”, “cat”: “webrtc”, “ph”: “E”, “ts”: 84810757000, “pid”: 1, “tid”: 9136}

实现原理:
event_tracer.cc

tracing启动一个输出线程,一直扫描日志队列,有内容则输出

  EventLogger::Log(){  
    while(1){  
         shutdown_event_.Wait(100);  
         print( queue.pop());  
    }  

}

AddTraceEvent源源不断的填充日志到队列中

  EventLogger::AddTraceEvent(){  
           queue.push();  
    }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值