前言
有時候需要進行源碼斷點調試(斷點調試是尋找問題的利器泪姨,同時也有利于加快理解ffmpeg源碼),本文介紹如何用Xcode開發(fā)環(huán)境進行ffmpeg的源碼斷點調試饰抒,這里介紹了如何開啟源碼斷點調試肮砾,開啟源碼斷點調試的前提是編譯ffmpeg庫的時候開啟--enable-debug選項。
源碼調試前的準備
- 環(huán)境
系統(tǒng):Mac OS X 10.15.4 (19E266)
Xcode:11.4 (11E146)
ffmpeg:4.2 - 編譯mac下的ffmpeg源碼
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
git checkout -b 4.2 remotes/origin/release/4.2
./configure --enable-debug --enable-gpl --enable-libx264 \
--enable-nonfree --enable-libmp3lame --disable-optimizations
make && make install
這里引入了x264 libmp3lame外部庫袋坑,make工具默認會在/usr/local/include查找外部庫的頭文件仗处,在/usr/local/lib查找對應的外部庫文件;如果這些外部庫沒有安裝枣宫,則通過brew工具安裝,命令如下:
brew install x264
brew install lame
備注:
--disable-optimizations必須要加上婆誓,不然斷點調試會出現(xiàn)"stack_not_16_byte_aligned_error"崩潰(10.15.4的系統(tǒng)和11.4的xcode編譯的ffmpeg庫才會有這個問題,其它情況不需要加這個選項)也颤。
--enable-libx264 后邊命令寫不下時的 "\" 要加上
默認ffmpeg會被安裝到源碼根目錄下洋幻。
-
準備調試工程
1、新建一個工程
image.png
工程語言為:C語言
備注:等待數分鐘待xcode創(chuàng)建完所有的索引
調試ffmpeg自帶源碼ffmpeg.c/ffplay.c/ffprobe.c
1翅娶、在前面工程中新建target
2文留、配置target
3、配置運行參數
備注:這里為ffplay 命令行程序運行需要的參數故觅。如果上面選擇的是ffmpeg程序厂庇,這里參數可以根據實際需求更改
4、調試
如果更改了更改了這三個文件中的代碼或者ffmpeg中的源碼输吏,則重新執(zhí)行指令
make
將更改生效,然后再進行對應的斷點調試
調試ffmpeg下的examples例子源碼
Mac環(huán)境下編譯ffmpeg下examples中的例子
方式一
// -o 代表生成中間編譯代碼替蛉,并且生成可執(zhí)行程序
cd ffmpeg源碼/examples
clang encode_video.c -o ./test/encode_video -I/usr/local/include -L/usr/local/lib/ -lavformat -lavcodec -lavutil -lavfilter -lswscale
./test/encode_video ./test/test.mp4 libx264
備注:此方式編譯的程序無法進行斷點調試贯溅,原因還不清楚
方式二
cd ffmpeg源碼/
make examples
如果要清除重新編譯則先使用命令 make examplesclean拄氯;具體參考examples目錄下的readme文檔;默認這些例子程序將生成在examples目錄下
對examples下的程序程序設置斷點調試步驟和前面基于ffmpeg/ffprobe/ffplay一樣它浅。只不過在前面步驟4中選擇的程序為example這些例子程序译柏,打斷點時選擇examples目錄下的對應例子代碼即可