开发Android应用时,如何调试需修改的FFmpeg C++库?
GDB远程调试
在Linux编译FFmpeg时添加--enable-debug参数,生成带完整调试符号的库文件。将库和测试用的FFmpeg可执行文件推送到Android设备后,在设备端启动gdbserver:gdbserver :5039 /data/local/tmp/your_ffmpeg_test_bin接着在Windows的IDE(如CLion、VS Code)中配置远程GDB连接,指向Linux虚拟机的对应端口,即可设置断点、单步执行、查看变量与内存,比纯日志调试效率高得多。注意编译时不要用
strip去除调试符号,同时确保Android设备开启调试权限。Android Studio Native调试集成
将Linux编译的带调试符号的.so库及头文件导入Android Studio项目,在CMakeLists.txt中配置库的链接路径。之后直接在Native代码中设置断点,运行App时Android Studio会自动触发断点,支持Java层与Native层联合调试,能直观查看调用栈、内存状态,无需手动解析日志。FFmpeg内置调试能力
编译FFmpeg时开启--enable-debug=3可获得最详细的调试信息,同时通过av_log_set_level(AV_LOG_DEBUG)开启内置日志输出,还能自定义av_log回调将日志转发到Android Logcat,既规范又能直接在Android Studio中查看。此外,用FFmpeg自带的ffprobe工具分析媒体文件,可快速定位处理流程中的格式或编码问题,减少冗余日志代码。QEMU虚拟机本地调试
若无需真实硬件,可在Linux虚拟机中用QEMU模拟Android环境,将编译好的FFmpeg库和App部署到虚拟机内,直接用GDB本地调试,省去远程连接的配置步骤,适合前期功能验证阶段的调试。
内容的提问来源于stack exchange,提问作者Super Duck

