Android 断点调试 webrtc medieasoup
Posted 清霜之辰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 断点调试 webrtc medieasoup相关的知识,希望对你有一定的参考价值。
android 断点调试 webrtc、 medieasoup
本文首发地址 https://blog.csdn.net/CSqingchen/article/details/120156900
最新更新地址 https://gitee.com/chenjim/chenjimblog
编译 Debug 包
修改 ./build/toolchain/android/BUILD.gn
...
template("android_clang_toolchain") {
...
_prefix = rebase_path("$clang_base_path/bin", root_build_dir)
cc = "$_prefix/clang"
cxx = "$_prefix/clang++"
ar = "$_prefix/llvm-ar"
ld = cxx
readelf = _tool_prefix + "readelf"
nm = _tool_prefix + "nm"
# 注释掉下面三行配置,即可实现 unstrip
# strip = rebase_path("//buildtools/third_party/eu-strip/bin/eu-strip",
# root_build_dir)
# use_unstripped_as_runtime_outputs = android_unstripped_runtime_outputs
...
}
...
添加编译参数
关键参数为 is_debug=true symbol_level=2 android_full_debug=true
$ ./tools_webrtc/android/build_aar.py \\ --extra-gn-args "is_debug=true symbol_level=2 android_full_debug=true" \\ --arch arm64-v8a
安卓应用中修改 app/build.gradle
如下
...
android {
buildTypes {
debug {
debuggable true // 必须设置为 true
jniDebuggable true // 必须设置为 true
minifyEnabled false // 必须设置为 false
}
}
packagingOptions {
...
// 如果不设置 doNotStrip,编译出来的安装包还是会丢失调试信息;
// 因为我们只编译了 arm64-v8a 架构的包,所以只需要配置这一行即可
doNotStrip "*/arm64-v8a/*.so"
}
}
...
设置DEBUG TYPE
设置源码映射
# https://stackoverflow.com/a/53065726/4696820
# 查看 Native 层 webrtc::PeerConnection::RestartIce 这个方法的调试信息;
# 这里选用 RestartIce 而不是 CreateOffer 作为示例的原因是其输出单一,易于阅读
(lldb) image lookup -vrn webrtc::PeerConnection::RestartIce
# 设置源码映射,注意替换为自己的路径
(lldb) settings set target.source-map ../../../ D:\\code\\mediasoup\\mediasoup-client-android\\mediasoup-client\\deps\\webrtc\\src
引用自 https://webrtc.mthli.com/basic/webrtc-breakpoint/
该文中还有一些比较好 webrtc相关知识
文档
比如 SDP 会话描述介绍 、 RTP 协议介绍 、视频旋转角度等
以上是关于Android 断点调试 webrtc medieasoup的主要内容,如果未能解决你的问题,请参考以下文章
Android debug:Android Studio断点调试详解
Android学习笔记Android Studio简单断点调试