iOS学习开源库断点方法

问题

工作原因遇到音视频相关开源库,例如:live555,ffmpeg,ijkplayer,vlc等等。现在把其中的经验记录如下。

方案

方案1集成源码

其中live555客户端源码较少可以直接把源码文件copy进工程,直接调试即可。

iOS学习开源库断点方法_第1张图片
com_ios_mediacodec_VideoDecoder_hh_和_videotoolbox_m.png

方案2自己编译而后打断点

包括ffmpeg以及vlc.ijkplayer是基于ffmpeg开发的,ijk原生部分代码可以直接调试,ijk依赖的ffmpeg也需要用到方案2.

案例1ijkplayer

参照iOS 版FFMPEG调试
安装好之后,直接打断点即可,例如找到调用的ffmpeg解码函数avcodec_decode_video2,单步跟进

iOS学习开源库断点方法_第2张图片
utils_c.png

案例2MobileVLCKit

参照iOS编译MobileVLCKit客户端打开Demo工程
先在player.m打断点

- (void)playMedia {
    [_player play];
}
iOS学习开源库断点方法_第3张图片
videotoolbox_m_和_utils_c.png

需要注意的点

  • 因为是多线程的,调试步进到某一部分就已经进不去了。因为在别的线程执行了,这就需要自己对源码的基本框架有所了解了
  • 这种打断点弊端一,无index关键字不变色,无法跳转进去对应的类以及方法。
  • 弊端二,我想知道videotoolbox.m相关调用,因为没有videotoolbox.h对应代码是动态条用的,只能通过对源码的了解猜测才能步进videotoolbox.m这个文件,只有找到至少 一个能进入videotoolbox.m的地方,才能给videotoolbox.m打断点。

参考文献

VLC架构及流程分析

你可能感兴趣的:(iOS学习开源库断点方法)