zoukankan      html  css  js  c++  java
  • Android IOS WebRTC 音视频开发总结(十七)-- 调试技巧

    本文章主要介绍WEBRTC在各平台下调试或日志查看方式,以方便问题排查,包括BS,PC,Android,IOS(本系列文章转载请说明出处,博客园RTC.Blacker).

    1,浏览器开发:

    这种开发方式不需要下载和编译WEBRTC源码(很多人都是"死"在这里的,不过确实很麻烦,原因就不赘述了),直接调用浏览器提供的API,

    入门相对简单(这并不意味着效果差,恰恰相反,因为浏览器厂商为你做了很多的优化,很多时候效果比自己去弄好多了).

    这种方式的缺陷就是无法修改底层代码,如果您想调整一些实现方式或与现有系统结合就不好弄了.

    所以如果这种方式出问题了一般都是您自己的问题,相应的查问题方式就是console.log和wireshake之类的工具.

      

    2,Android开发:

    这部分是我要重点介绍的,很多不熟悉ndk或linux的不知道怎么去查看底层的日志,其实通过logcat您可以比较方便地看到底层的输出.

    如果您正在使用Talk进行开发,可参考如下调用方式:

    如果没有使用到libjingle,可参考MediaEngine.java的调用方式:

    Logging.java在JNI中实现如下:

    构造g_trace_callback是因为需要在其构造函数中注册一个callback,LogcatTraceContext实现如下:

    呵呵呵,搞过ndk开发的,很熟悉__android_log_print这个函数吧.

    这时候您可能会有疑问,如果要在调用Logging.enableTracing()方法前查看初始化libjingle环境的日志,怎么搞呢?

    请看WebRtcVoiceEngine构造函数的实现:

    它在构造函数里面直接注册callback,当webrtc需要输出log的时候就可以直接执行自己定义的callback,

    这样就可以很好滴控制日志的输出,设计得很巧妙,比看啥设计模式的理论书籍都管用.

    这时候您还有新的疑问,如果要在调用Logging.enableTracing()方法前查看webrtc底层的日志,怎么办呢?

    下面这些代码是我自己加上去的(不是最好的方案),因为webrtc目前还不完善的原因,日志都搞得这么复杂(历史原因就是webrtc与talk是后面才整合到一起的),估计他们后面会改得更合理,所以我也这样先将就着,呵呵.


    3,PC开发:

    PC上基本上都是用VS在开发,很好调试,既可以将日志输出到控制台,还可以直接在代码中下断点,或者抓包,手段很多,操作起来也不复杂.

     

    4,iOS开发:

    xcode跟vs差不多,很方便,无需赘述.

    吐槽一句,xcode,eclipse,virtual machine一起运行,mac表示很吃力,机器又得升级换代了,下个月的信用卡哦,亚历山大.

  • 相关阅读:
    团队项目冲刺第十天
    gradle文件配置
    idea无Android项目
    php第二次实验报告
    最长回文字串(hdu 3068)
    优先队列实现哈弗曼最小权值
    最小生成树 克鲁斯卡尔(Kruskal)算法求最小生成树
    背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
    Cent Savings (DP) 分类: ACM dp 2015-08-0
    Judging Troubles (multiset查找) 分类: ACM STL
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/4176668.html
Copyright © 2011-2022 走看看