前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EasyNVR日志中堆栈信息打印为字节代码排查及优化

EasyNVR日志中堆栈信息打印为字节代码排查及优化

原创
作者头像
TSINGSEE青犀视频
修改2021-08-11 18:10:24
3190
修改2021-08-11 18:10:24
举报
文章被收录于专栏:TSINGSEE青犀视频TSINGSEE青犀视频

经常使用EasyNVR产品的用户都知道,作为音视频行业互联网直播产品,EasyNVR主要功能在于通过RTSP/ONVIF协议,接入前端音视频采集设备,通过EasyNVR软硬件产品将拉取过来的音视频流转化给适合全平台播放的RTMP、HTTP-FLV、HLS格式,极大的方便用户进行网页直播、微信直播及接入自身业务平台。

在测试期间,EasyNVR出现日志显示为数字的一段,无法看出是什么问题。

查看对应的代码为:

代码语言:javascript
复制
log.Printf("handle message failed, %v", p)
log.Println(debug.Stack())
其中 debug.Stack() 返回数据如下:
// Stack returns a formatted stack trace of the goroutine that calls it.
// It calls runtime.Stack with a large enough buffer to capture the entire trace.
func Stack() []byte {
   buf := make([]byte, 1024)
   for {
      n := runtime.Stack(buf, false)
      if n < len(buf) {
         return buf[:n]
      }
      buf = make([]byte, 2*len(buf))
   }
}

从代码中我们可以得知最终返回的数据是 []byte 类型,因此出现以上问题。

修改代码如下:

代码语言:javascript
复制
if p := recover(); p != nil {
   log.Printf("handle message failed, %v", p)
   log.Printf("debug stack : %v", string(debug.Stack()))
}

以上代码将返回的 []byte 转换为 string 类型,写入到日志中,即可解决该问题。

EasyNVR可以说已经成为国内视频互联网化基础建设的排头兵,几乎各个民生行业都已经有了EasyNVR视频能力输出的身影,EasyNVR多年服务于各行各业视频基础建设,EasyNVR的可靠性、完整性、稳定性已经受到了业界的广泛认可。同时为方便用户了解和使用EasyNVR,我们提供EasyNVR的试用版本,解压即用,欢迎测试。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档