一、调试 AppRTCMobile
打开 out/mac_Debug(其他的平台相应修改) 目录,使用 Xcode 打开 all.xcworkspace 文件,找到 AppRTCMobile 目标,运行调试,这个时候是不能在源码上设置断点的,因为无法找到符号和源文件的对应关心,需要设置 source map。
首先暂停程序运行,然后在 lldb 终端下运行如下命令找到某一个符号的地址以及源文件信息,如下:
(lldb) image lookup -vn NetEqImpl::GetAudio
输出
......
CompileUnit: id = {0x00000000}, file = "../../modules/audio_coding/neteq/neteq_impl.cc", language = "c++14"
......
注意如上一行,这说明了这个符号对应的源文件的位置,因为你运行程序的路径通过上诉的相对路径并不能找到源文件,需要设置 lldb 的 source map。如果没有 “CompileUnit…” 那很有可能是可执行文件中没有包含调试信息,请使用 dwarfdump, objdump, nm 等相关工具查看。
(lldb) settings set target.source-map "../../" "/Users/albert/Workspace/alibaba/alirtc/webrtc_grtn/"
注意需要设置你本地环境的源文件路径,这个 source-map 就是为了匹配你设置断点的文件行数可以对应上二进制文件中的汇编相应的文件行数。