iOS學習開源庫斷點方法

問題

工作原因遇到音視頻相關開源庫,例如:live555,ffmpeg,ijkplayer,vlc等等。現在把其中的經驗記錄如下。

方案

方案1集成源碼

其中live555客戶端源碼較少可以直接把源碼文件copy進工程,直接調試即可。

com_ios_mediacodec_VideoDecoder_hh_和_videotoolbox_m.png

方案2自己編譯而后打斷點

包括ffmpeg以及vlc.ijkplayer是基于ffmpeg開發的,ijk原生部分代碼可以直接調試,ijk依賴的ffmpeg也需要用到方案2.

案例1ijkplayer

參照iOS 版FFMPEG調試
安裝好之后,直接打斷點即可,例如找到調用的ffmpeg解碼函數avcodec_decode_video2,單步跟進

utils_c.png

案例2MobileVLCKit

參照iOS編譯MobileVLCKit客戶端打開Demo工程
先在player.m打斷點

- (void)playMedia {
    [_player play];
}
videotoolbox_m_和_utils_c.png

需要注意的點

  • 因為是多線程的,調試步進到某一部分就已經進不去了。因為在別的線程執行了,這就需要自己對源碼的基本框架有所了解了
  • 這種打斷點弊端一,無index關鍵字不變色,無法跳轉進去對應的類以及方法。
  • 弊端二,我想知道videotoolbox.m相關調用,因為沒有videotoolbox.h對應代碼是動態條用的,只能通過對源碼的了解猜測才能步進videotoolbox.m這個文件,只有找到至少 一個能進入videotoolbox.m的地方,才能給videotoolbox.m打斷點。

參考文獻

VLC架構及流程分析

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容