本文章主要介紹WEBRTC在各平臺下調試或日誌查看方式,以方便問題排查,包括BS,PC,Android,IOS(本系列文章轉載請說明出處,博客園RTC.Blacker).java
1,瀏覽器開發:linux
這種開發方式不須要下載和編譯WEBRTC源碼(不少人都是"死"在這裏的,不過確實很麻煩,緣由就不贅述了),直接調用瀏覽器提供的API,android
入門相對簡單(這並不意味着效果差,偏偏相反,由於瀏覽器廠商爲你作了不少的優化,不少時候效果比本身去弄好多了).web
這種方式的缺陷就是沒法修改底層代碼,若是您想調整一些實現方式或與現有系統結合就很差弄了.設計模式
因此若是這種方式出問題了通常都是您本身的問題,相應的查問題方式就是console.log和wireshake之類的工具.xcode
2,Android開發:瀏覽器
這部分是我要重點介紹的,不少不熟悉ndk或linux的不知道怎麼去查看底層的日誌,其實經過logcat您能夠比較方便地看到底層的輸出.eclipse
若是您正在使用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表示很吃力,機器又得升級換代了,下個月的信用卡哦,亞歷山大.