webrtc工程编译调试实战-源码级调试

在前面的章节中: 如何学webrtc的开源代码,今天我们讲解下如何编译和调试源码.

源码的下载方式参考 :
https://blog.csdn.net/webrtc_video/article/details/115007232

目前我们在2021.7.21号更新了一版.

环境准备

  1. Center OS 8 / VSCode
  2. yum install gcc-c++ gdb cmake make zlib
  3. webrtc 源码

webrtc 源码下载:
百度网盘地址后续开放!

效果展示

今天我们主要讲解一下,如何实现webrtc源码级的调试。(下一步,我们想实现整个源码级别的拉取,然后讲gn转为 cmake工程),目的就是为了深度的学习和思考.

源码级编译调试效果如下:
在这里插入图片描述
按F11,我们再接着跟进去:
在这里插入图片描述
到这里,我们实现了从源码级的跟踪! 对于我们后期学习工程里面的unittest具有十分重大的意义!

编译全链接静态库

所谓全链接静态库,意思就是我们一个libwebrtc.a就包含整个webrtc工程.

编译参考 :
https://stackoverflow.com/questions/38637212/cross-compile-webrtc-for-arm

编译之前的准备工作 :

yum installl gtk3-devel
yum install pulseaudio-libs-devel
yum install alsa-lib-devel
yum install libXtst-devel
yum -y install  libatomic
gn gen out/x64 --args='is_debug=true rtc_include_tests=false treat_warnings_as_errors=false use_rtti=true is_component_build=false enable_iterator_debugging=false is_clang=false use_sysroot=false  use_custom_libcxx=false use_custom_libcxx_for_host=false  target_os="linux" target_cpu="x64"'

编译成功后,会在out/x64的obj目录下得到libwebrtc.a,这个静态库是 debug版本,大小约为:400M.
在这里插入图片描述

vscode调试环境搭建

我们采用的是Vscode远程调试的方法,采用远程调试的原因如下:

  1. ninja -C out/x64,没有办法在linux / win共享文件夹下编译成功,原因是软链接问题.
  2. 关于g++ -g 产生的静态库,比如我们是在/mnt/work目录下编译出的静态库.a,.a会记录源码的位置在/mnt/work的位置下,如果我们把.a拷贝到另一台电脑或者其它位置,.a依然会去/mnt/work的位置去找源文件.

所以我们采用了 vs code远程调试.

vs code远程调试需要安装的配置 :

  1. ssh remote connect.
  2. c/c++ debug

下面是我本人安装的:
在这里插入图片描述
整个源码对应的CMake编译脚本 :

cmake_minimum_required(VERSION 2.8)
set (CMAKE_CXX_STANDARD 14)

project(citms_media_server)

set(APP_NAME                "webrtc_test")
set(CMAKE_CXX_FLAGS         "-std=c++14 -g -fpermissive")  #注意调试的话,此行代码一定要添加!

include_directories(${PROJECT_SOURCE_DIR}/)
include_directories(${PROJECT_SOURCE_DIR}/third_party/abseil-cpp/)

add_definitions(-D WEBRTC_POSIX) 
add_definitions(-D WEBRTC_LINUX) 

Link_directories(  ${PROJECT_SOURCE_DIR}/out/x64/obj )

link_libraries(
    -lwebrtc
    -lpthread
)

add_executable(${APP_NAME} main.cc)

按F5进行调试,这个时候需要配置.vscode/launch.json.

    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/mnt/work/webrtc/webrtc-checkout/src/cmake-build/webrtc_test",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wh_shentu929

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值