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架构及流程分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容