1、环境准备

2、注意事项

2.1、ffmpeg rockchip在configure的时候,记得打开调试符号-g,并且–disable-stripping(禁止剥离符号)

命令如下:

./configure --pkg-config=pkgconf --arch=aarch64 --target-os=linux 
--cross-prefix=aarch64-linux-gnu- --prefix=/opt/rockchip/ffmpeg-rockchip/ --enable-gpl 
--enable-version3 --enable-libdrm --enable-rkmpp --enable-rkrga --enable-shared 
--enable-cross-compile --disable-static --disable-stripping 
--extra-cflags="-g -I/opt/rockchip/rkrga-cross/include 
-I/opt/rockchip/rklibdrm-cross/include 
-I/opt/rockchip/rkmpp-cross/include" 
--extra-ldflags="-g -L/opt/rockchip/rkrga-cross/lib 
-L/opt/rockchip/rklibdrm-cross/lib 
-L/opt/rockchip/rkmpp-cross/lib"

否则会报错:

(No debugging symbols found in target:/opt/ffmpeg-rockchip/bin/ffmpeg)
(No debugging symbols found in target:/lib/ld-linux-aarch64.so.1)

# 配置编译ffmpeg的时候如果添加了-g --disable-stripping
# 使用以下命令查看是否有符号
readelf -s /opt/rockchip/ffmpeg-rockchip/bin/ffmpeg | grep "FUNC"

// 正确会有如下输出:   
// 0: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND avcodec_receive_frame
// 1: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND avcodec_send_packet
// 等很长一堆

2.2、重新配置ffmpeg的时候记得先make clean

2.3、由于VM上的虚拟机是x86架构,直接sudo apt install gdb是无法远程调试arm架构的开发板,需要使用gdb-multiarch

sudo apt-get install gdb-multiarch
gdb-multiarch // 开启gdb-multiarch
target remote 192.168.137.11:1234 // 连接开发板

# 在调试之前,记得在VM上的gdb中设置符号路径
set sysroot /opt/rockchip/ffmpeg-rockchip

否则会提示报错:

warning: while parsing target description (at line 4): Target description specified unknown architecture "aarch64"

3、运行程序并调试

开发板上执行命令:

# 我现在主要是想先看下rkmppdec.c中的几个重要函数,所以确保在开发板上执行的命令会调用相关函数
gdbserver :1234 ffmpeg -hwaccel rkmpp -i ./MPP_DEMO/test.mp4 -c:v h264_rkmpp output.mp4

现在开发板终端输出如图所示:
在这里插入图片描述

VM终端执行命令:

gdb-multiarch
target remote 192.168.137.11:1234 // 直接写你的开发板ip地址以及对外提供的监听端口号

VM终端输出如图所示:
在这里插入图片描述
此时就进入了gdb-multiarch,可以进行远程调试。

# 我在rkmpp_decode_init函数打了个断点
b rkmpp_decode_init

VM终端输出如图:
在这里插入图片描述
直接continue / c继续执行,这时候开发板就会继续运行命令,当运行到rkmpp_decode_init时就会暂停

开发板输出如图所示:
在这里插入图片描述
可以看到硬解过程暂停了

此时在VM,我们就可以看到如图所示:
在这里插入图片描述
我们就可以对应着TARE打开的同版本源码去看代码调试了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐