IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> webrtc工程编译调试实战-源码级调试 -> 正文阅读

[开发工具]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
                }
            ]
        }
    ]
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 13:28:45  更:2021-07-28 13:28:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 19:25:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码