ffmpeg调试利器:跳过平台差异性,docker+clion远程调试

初衷

为了友好地调试ffmpeg,学习其中代码精华,梳理脉络,界面式的断点调试肯定是比较好的方法。

解决思路

(1)基于clion是跨平台的ide,可以让我们在window、mac、linux平台都可以统一使用,跳过各个平台的差异性。
(2)ffmpeg在各个平台也是有差异性的,为了避免这种差异性,采取docker容器的方式去隔离解决。

ffmpeg远程调试.png

Dockerfile配置文件:

FROM ubuntu:14.04

#添加163源
ADD http://mirrors.163.com/.help/sources.list.trusty /etc/apt/sources.list

RUN apt-get update && apt-get upgrade -y && apt-get install -y \
      apt-utils gcc g++ openssh-server cmake build-essential gdb gdbserver rsync vim python3 libc-dbg  libpython3-stdlib libc6

ADD . /code
WORKDIR /code

# Taken from - https://docs.docker.com/engine/examples/running_ssh_service/#environment-variables

RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i       /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# 暴露端口  22 for ssh server. 7777 for gdb server.
EXPOSE 22 7777

RUN useradd -ms /bin/bash debugger
RUN echo 'debugger:pwd' | chpasswd

########################################################
# 安装需要的第三方库
########################################################
RUN apt-get install -y \
    libz-dev libx264-dev libfdk-aac-dev liblzma-dev libxcb*
########################################################

CMD ["/usr/sbin/sshd", "-D"]

docker-compose.yml配置文件:

version: '3'

services:
  gdbserver:
    build: .
    security_opt: # options needed for gdb debugging
      - seccomp:unconfined
      - apparmor:unconfined
    container_name: debug
    ports:
      - "7776:22"  # 映射本机7776端口为docker容器对应的22端口
      - "7777:7777"   # 映射本机7777端口为docker容器对应的7777端口
    volumes:
      - .:/code  # 挂载当前工程目录对应为docker容器中的/code目录

本实例调试ffmpeg工程地址

跨平台调试ffmpeg,界面式调试,基于docker+clion

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值